sql >> Database >  >> RDS >> Sqlserver

Hoe goed is het geografische datatype in SQL Server 2008?

Als je alleen een standaard Lat/Lng-paar hanteert zoals je beschrijft, en het enige wat je doet een simpele opzoeking is, dan zul je waarschijnlijk niet veel winnen in de weg van een snelheidsverhoging door het Geometry Type te gebruiken.

Als u echter avontuurlijker wilt worden, zoals u aangeeft, zal het overschakelen naar het gebruik van de Geometrie-typen een hele wereld van nieuwe mogelijkheden voor u openen, en niet alleen voor zoekopdrachten.

U kunt bijvoorbeeld (op basis van een project waaraan ik werk) (als het Britse gegevens zijn) de polygoondefinities downloaden voor alle steden / dorpen / steden voor een bepaald gebied, en vervolgens kruisverwijzingen doen om in een bepaalde stad te zoeken, of als je een wegenkaart had, zou je kunnen zien welke klanten naast belangrijke bezorgroutes, snelwegen, hoofdwegen, allerlei dingen woonden.

Je kunt ook heel mooie rapportages maken, je een kaart van steden voorstellen, waarbij elke omtrek op een kaart is uitgezet en vervolgens ingekleurd met een kleur om de dichtheid van klanten in een gebied weer te geven, een eenvoudige geometrie SQL zal je gemakkelijk een telling rechtstreeks teruggeven uit de database, om dit soort informatie in een grafiek te zetten.

Dan is er tracking, ik weet niet met welke gegevens je omgaat, of waarom je klanten hebt, maar als je iets bezorgt, weet je hoe dicht het bij een bepaalde klant is als je de coördinaten van een bestelwagen invoert.

Wat betreft de vraag is STDistance snel? nou dat is eigenlijk moeilijk te zeggen, ik denk dat een betere vraag is "Is het snel in vergelijking met ...", het is moeilijk om ja of nee te zeggen, tenzij je iets hebt om het mee te vergelijken.

Ruimtelijke indexen zijn een van de belangrijkste redenen om uw gegevens naar een geografisch bewuste database te verplaatsen. Ze zijn geoptimaliseerd om de beste resultaten voor een bepaalde taak te produceren, maar zoals bij elke andere database, krijgt u slechte prestaties als u slechte indexen maakt.

Over het algemeen zou je zeker een soort snelheidstoename moeten zien, omdat de wiskunde bij het sorteren en indexeren zich meer bewust is van het doel van de gegevens, in plaats van dat ze redelijk lineair werken zoals een normale index is.

Houd er ook rekening mee dat hoe krachtiger de SQL-servermachine is, hoe beter de resultaten zullen zijn.

Een laatste punt om te vermelden is het beheer van de gegevens, als u een GIS-bewuste database gebruikt, dan opent dat de weg voor u om een ​​GIS-pakket zoals ArcMap of MapInfo te gebruiken om uw gegevens te beheren, corrigeren en visualiseren, wat betekent dat correcties heel eenvoudig zijn doen door te wijzen, klikken en slepen.

Mijn advies zou zijn om een ​​side-by-side-tabel te maken naast je bestaande, die is geformatteerd voor ruimtelijke bewerkingen, dan een paar opgeslagen procedures te schrijven en een aantal timingtests uit te voeren, kijk welke het beste uitkomt. Als je alleen al een aanzienlijke toename hebt van de basisbewerkingen die je doet, dan is dat alleen al een rechtvaardiging, als het ongeveer gelijk is, hangt je beslissing echt af van welke nieuwe functionaliteit je eigenlijk wilt bereiken.




  1. Hoe voeg ik een PostGIS GEOMETRY-punt in Sequelize ORM in?

  2. MS SQL Server en JDBC:gesloten verbinding

  3. Hoe maak je een wrapper om iets anders terug te geven dan ref cursor

  4. STRING_SPLIT() in SQL Server 2016:vervolg #1