Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie gut ist der geografische Datentyp in SQL Server 2008?

Wenn Sie nur ein Standard-Lat/Lng-Paar handhaben, wie Sie es beschreiben, und alles, was Sie tun, eine einfache Suche ist, dann werden Sie wohl nicht viel an Geschwindigkeitssteigerung durch die Verwendung des Geometrietyps gewinnen.

Wenn Sie jedoch, wie gesagt, abenteuerlustiger werden möchten, eröffnet Ihnen der Wechsel zur Verwendung der Geometrietypen eine ganze Welt neuer Möglichkeiten, und zwar nicht nur für die Suche.

Zum Beispiel (basierend auf einem Projekt, an dem ich arbeite) könnten Sie (wenn es sich um britische Daten handelt) die Polygondefinitionen für alle Städte / Dörfer / Städte für ein bestimmtes Gebiet herunterladen und dann Querverweise erstellen, um in einer bestimmten Stadt zu suchen, oder Wenn Sie eine Straßenkarte hätten, könnten Sie herausfinden, welche Kunden in der Nähe von Hauptlieferrouten, Autobahnen, Hauptstraßen und allem möglichen wohnen.

Sie könnten auch sehr ausgefallene Berichte erstellen, sich eine Karte von Städten vorstellen, auf der jeder Umriss auf einer Karte gezeichnet und dann mit einer Farbe schattiert wurde, um die Kundendichte in einem Gebiet anzuzeigen. Eine einfache Geometrie-SQL gibt Ihnen leicht eine direkte Zählung zurück aus der Datenbank, um diese Art von Informationen grafisch darzustellen.

Dann gibt es Tracking, ich weiß nicht, mit welchen Daten Sie umgehen oder warum Sie Kunden haben, aber wenn Sie etwas liefern, geben Sie die Koordinaten eines Lieferwagens ein, der Ihnen sagt, wie nahe er an einem bestimmten Kunden ist. P>

Was die Frage betrifft, ist STDistance schnell? Nun, das ist wirklich schwer zu sagen, ich denke, eine bessere Frage ist "Ist es schnell im Vergleich zu ...", es ist schwierig, ja oder nein zu sagen, es sei denn, Sie haben etwas, mit dem Sie es vergleichen können.

Räumliche Indizes sind einer der Hauptgründe für das Verschieben Ihrer Daten in eine geografisch orientierte Datenbank. Sie sind optimiert, um die besten Ergebnisse für eine bestimmte Aufgabe zu erzielen. Wie bei jeder Datenbank erzielen Sie jedoch eine schlechte Leistung, wenn Sie schlechte Indizes erstellen.

Im Allgemeinen sollten Sie auf jeden Fall eine Art Geschwindigkeitssteigerung feststellen, da die Mathematik beim Sortieren und Indizieren den Zweck der Daten besser berücksichtigt und nicht nur ziemlich linear arbeitet, wie es bei einem normalen Index der Fall ist.

Denken Sie auch daran, dass Sie umso bessere Ergebnisse erzielen, je leistungsfähiger die SQL-Server-Maschine ist.

Ein letzter zu erwähnender Punkt ist die Verwaltung der Daten. Wenn Sie eine GIS-fähige Datenbank verwenden, eröffnet Ihnen dies die Möglichkeit, ein GIS-Paket wie ArcMap oder MapInfo zu verwenden, um Ihre Daten zu verwalten, zu korrigieren und zu visualisieren, was bedeutet, dass Korrekturen sehr einfach sind durch Zeigen, Klicken und Ziehen.

Mein Rat wäre, eine Side-by-Side-Tabelle zu Ihrer vorhandenen zu erstellen, die für räumliche Operationen formatiert ist, dann ein paar gespeicherte Procs zu schreiben und einige Timing-Tests durchzuführen, um zu sehen, was am besten herauskommt. Wenn Sie nur bei den Grundoperationen eine deutliche Steigerung haben, dann ist das allein eine Rechtfertigung, wenn es ungefähr gleich ist, hängt Ihre Entscheidung wirklich davon ab, welche neuen Funktionen Sie tatsächlich erreichen möchten.