sql >> Databasteknik >  >> RDS >> Sqlserver

Hur bra är geografidatatypen i sql server 2008?

Om du bara hanterar ett standard Lat/Lng-par som du beskriver, och allt du gör är en enkel uppslagning, kommer du förmodligen inte att få mycket i vägen för en hastighetsökning genom att använda Geometry Type.

Men om du vill bli mer äventyrlig som du säger, då byter du till att använda geometrityperna kommer att öppna upp en hel värld av nya möjligheter för dig, och inte bara för sökningar.

Till exempel (Baserat på ett projekt jag arbetar med) kan du (om det är data från Storbritannien) ladda ner polygondefinitionerna för alla städer/byar/städer för ett givet område, sedan göra korsreferenser för att söka i en viss stad, eller om du hade en vägkarta, kunde du hitta vilka kunder som bodde bredvid större leveransvägar, motorvägar, huvudvägar allt möjligt.

Du kan också göra några mycket snygga rapporter, föreställa dig en karta över städer, där varje kontur ritades upp på en karta, och sedan skuggades in med en färg för att visa tätheten av kunder i ett område, lite enkel geometri SQL kommer enkelt att ge dig en räkning rakt från databasen för att plotta den här typen av information.

Sedan finns det spårning, jag vet inte vilken data du hanterar eller varför du har kunder, men om du levererar något, att mata in koordinaterna för en leveransbil, talar om för dig hur nära den är en given kund.

När det gäller frågan är STDistance snabb? ja det är svårt att säga egentligen, jag tror att en bättre fråga är "Är det snabbt i jämförelse med.....", det är svårt att säga ja eller nej, om du inte har något att jämföra med.

Rumsliga index är en av de främsta anledningarna till att flytta din data till en geografiskt medveten databas, de är optimerade för att ge bästa resultat för en given uppgift, men som vilken databas som helst, om du skapar dåliga index, kommer du att få dålig prestanda.

Generellt sett bör du definitivt se en hastighetsökning av något slag, eftersom matematiken i sorteringen och indexeringen är mer medveten om syftet med datan i motsats till att bara vara ganska linjär i drift som ett normalt index är.

Tänk också på att ju mer kraftfull SQL-servermaskinen är, desto bättre resultat får du.

En sista punkt att nämna är hantering av data, om du använder en GIS-medveten databas, öppnar det för dig att använda ett GIS-paket som ArcMap eller MapInfo för att hantera, korrigera och visualisera dina data, vilket innebär att korrigeringar är mycket enkla. att göra genom att peka, klicka och dra.

Mitt råd skulle vara att skapa en sida vid sida-tabell till din befintliga, som är formaterad för rumsliga operationer, sedan skriva några lagrade processer och göra några timing-tester, se vilken som kommer ut bäst. Om du har en betydande ökning bara på de grundläggande operationerna du gör, så är det enbart motivering, om det är ungefär lika så beror ditt beslut verkligen på vilken ny funktionalitet du faktiskt vill uppnå.




  1. Att välja närmaste geokoordinater med hjälp av rumsligt index på mysql-tabellen fungerar inte

  2. odoo12 databas backup ingen ägare?

  3. Hur kan jag lyssna efter skapandet av en specifik modell och skapa en ny (på ett annat bord) baserat på detta?

  4. Skript för att hitta beroenden på flera nivåer för ett paket