Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
SQL-Datenbank in Microsoft Fabric
SQL Server unterstützt räumliche Daten und räumliche Indizes. Ein räumlicher Index ist ein erweiterter Index, der es Ihnen ermöglicht, eine räumliche Spalte zu indizieren. Eine räumliche Spalte ist eine Tabellenspalte mit Daten eines räumlichen Datentyps wie beispielsweise geometry oder geography.
Tip
Räumliche SQL Server-Tools sind eine von Microsoft gesponserte Open-Source-Sammlung von Tools für die Verwendung mit den räumlichen Typen in SQL Server. Dieses Projekt bietet eine Reihe von wiederverwendbaren Funktionen, die von Anwendungen genutzt werden können. Diese Funktionen können Datenkonvertierungsroutinen, neue Transformationen, Aggregate usw. umfassen. Weitere Details finden Sie unter Microsoft/SQLServerSpatialTools in GitHub.
Informationen zu räumlichen Indizes
Zerlegen von indiziertem Raum in eine Rasterhierarchie
In SQL Server werden räumliche Indizes mithilfe von B-Strukturen erstellt; das heißt, dass die Indizes die zweidimensionalen räumlichen Daten in der linearen Reihenfolge der B-Strukturen darstellen müssen. Bevor Daten in einen räumlichen Index eingelesen werden, implementiert SQL Server daher eine einheitliche hierarchische Zerlegung des Raums. Während der Indexerstellung wird der Raum in eine vier Ebenen umfassende Rasterhierarchiezerlegt. Diese Ebenen werden als Ebene 1 (die oberste Ebene), Ebene 2, Ebene 3und Ebene 4bezeichnet.
Auf jeder nachfolgenden Ebene wird die ihr übergeordnete Ebene weiter zerlegt, sodass jede Zelle der übergeordneten Ebene ein vollständiges Raster der nächsten Ebene enthält. Auf einer gegebenen Ebene verfügen alle Raster an beiden Achsen über die gleiche Anzahl von Zellen (beispielweise 4 x 4 oder 8 x 8), und die Zellen sind alle gleich groß.
Die folgende Abbildung zeigt die Unterteilung der Zelle oben rechts auf jeder Ebene der Rasterhierarchie in ein 4 × 4-Raster. In Wirklichkeit werden alle Zellen auf diese Art und Weise zerlegt. Wenn beispielsweise ein Raum in vier Ebenen von 4 x 4-Rastern zerlegt wird, ergibt dies insgesamt 65.536 Zellen der vierten Ebene.
Note
Die Zerlegung des Raums in einen räumlichen Index ist unabhängig von der Maßeinheit, die die Anwendung verwendet.
Die Zellen einer Rasterhierarchie werden mithilfe einer Variante der Raum füllenden Hilbert-Kurve linear nummeriert. Zur Veranschaulichung wird hier jedoch eine einfache zeilenweise Nummerierung statt der durch die Hilbert-Kurve erzeugten Nummerierung verwendet. In der folgenden Abbildung wurden bereits verschiedene Polygone, die Gebäude darstellen, und Linien, die Straßen darstellen, in einem 4 x 4-Raster der Ebene 1 platziert. Die Zellen der Ebene 1 werden ab der linken oberen Zelle von 1 bis 16 nummeriert.
Rasterdichte
Die Anzahl der Zellen entlang der Achsen eines Rasters bestimmt deren Dichte: je größer die Anzahl, desto dichter das Raster. Beispielsweise ist ein 8 x 8-Raster (das 64 Zellen ergibt), dichter als ein 4 x 4-Raster(das 16 Zellen ergibt). Die Rasterdichte wird pro Ebene definiert.
Die CREATE SPATIAL INDEXTransact-SQL-Anweisung unterstützt eine GRIDS-Klausel, mit der Sie unterschiedliche Rasterdichten auf unterschiedlichen Ebenen angeben können. Die Rasterdichte für eine gegebene Ebene wird mit einem der folgenden Schlüsselwörter angegeben:
| Keyword | Rasterkonfiguration | Anzahl von Zellen |
|---|---|---|
| LOW | 4X4 | 16 |
| MEDIUM | 8X8 | 64 |
| HIGH | 16X16 | 256 |
In SQL Server ist die Standardeinstellung für alle Ebenen MEDIUM, wenn der Datenbank-Kompatibilitätsgrad auf 100 oder niedriger festgelegt wird. Wenn der Datenbank-Kompatibilitätsgrad auf 110 oder höher festgelegt wird, ist die Standardeinstellung ein automatisches Rasterschema. (Das automatische Raster weist auf eine Konfiguration mit 8 Ebenen von HLLLLLLL hin.) Anstatt die Dichte des Indexrasters zu variieren, können Sie die Zellen pro Objekt und die Abfragefensterzellen pro Objekt mittels Hinweis variieren.
Sie können den Zerlegungsprozess steuern, indem Sie nicht standardmäßige Rasterdichten angeben. Beispielsweise können unterschiedliche Rasterdichten auf verschiedenen Ebenen für die Feinabstimmung eines Index anhand der Größe des indizierten Raums und der Objekte in der räumlichen Spalte nützlich sein.
Note
Die Rasterdichten eines räumlichen Index sind in den Spalten level_1_grid, level_2_grid, level_3_grid und level_4_grid der sys.spatial_index_tessellations -Katalogsicht sichtbar, wenn der Datenbank-Kompatibilitätsgrad auf 100 oder niedriger festgelegt wird. Die Tessellierungsschemaoptionen GEOMETRY_AUTO_GRID/GEOGRAPHY_AUTO_GRID füllen diese Spalten nicht. Die sys.spatial_index_tessellations-Katalogsicht enthält NULL -Werte für diese Spalten, wenn die automatischen Rasteroptionen verwendet werden.
Tessellation
Nach der Zerlegung eines indizierten Raums in eine Rasterhierarchie werden die Daten anhand des räumlichen Indexes zeilenweise aus der räumlichen Spalte gelesen. Nachdem der räumliche Index die Daten für ein räumliches Objekt (bzw. eine räumliche Instanz) gelesen hat, führt er für dieses Objekt einen Tessellierungsprozess durch. Durch den Tessellierungsprozess wird das Objekt in die Rasterhierarchie eingeordnet, indem das Objekt einer Menge von Rasterzellen zugeordnet wird, die es berührt (berührte Zellen). Beginnend auf Ebene 1 der Rasterhierarchie verläuft der Tessellierungsprozess auf dieser Ebene in der Breite. Potenziell kann der Prozess über alle vier Ebenen fortgesetzt werden, wobei zu einem Zeitpunkt jeweils nur eine Ebene bearbeitet werden kann.
Das Ergebnis des Tessellierungsprozesses ist eine Menge betroffener Zellen, die im räumlichen Index für das Objekt gespeichert werden. Durch das Verweisen auf diese aufgezeichneten Zellen kann mit dem räumlichen Index die Position des Objekts im Raum relativ zu anderen Objekten der räumlichen Spalte, die ebenfalls im Index gespeichert sind, bestimmt werden.
Tessellations-Regeln
Um die Anzahl der betroffenen Zellen zu begrenzen, die für ein Objekt erfasst werden, wendet der Tessellierungsprozess mehrere Tessellierungsregeln an. Diese Regeln bestimmen die Tiefe des Tessellierungsprozesses und welche der berührten Zellen im Index erfasst werden.
Nachfolgend sind diese Regeln aufgeführt:
Die Abdeckungsregel
Wenn das Objekt eine Zelle völlig bedeckt, heißt es, dass die Zelle vom Objekt überlagert wird. Eine abgedeckte Zelle wird gezählt und nicht tesselliert. Diese Regel ist auf allen Ebenen der Rasterhierarchie gültig. Die Abdeckungsregel vereinfacht den Tessellationsprozess und verringert die Datenmenge, die in einem räumlichen Index gespeichert wird.
Die Zellen-pro-Objekt-Regel
Diese Regel erzwingt den Zellen-pro-Objekt-Grenzwert, der die maximale Anzahl von Zellen festlegt, die für jedes Objekt gezählt werden können. Dieser Grenzwert gilt nicht für Ebene 1. Auf tieferen Ebenen steuert die Zellen-pro-Objekt-Regel die Informationsmenge, die über das Objekt aufgezeichnet werden kann.
Die Tiefste-Zelle-Regel
Die Deepest-Cell-Regel erzeugt die beste Näherung eines Objekts, indem nur die untersten Zellen erfasst werden, die für das Objekt tesselliert wurden. Elternzellen tragen nicht zur Anzahl der Zellen pro Objekt bei und werden nicht im Index erfasst.
Diese Tessellationsregeln werden rekursiv auf jeder Rasterebene angewendet. Im weiteren Verlauf dieses Abschnitts werden die Tessellierungsregeln ausführlicher beschrieben.
Abdeckende Regel
Wenn ein Objekt eine Zelle völlig bedeckt, heißt es, dass die Zelle vom Objekt überlagert wird. In der folgenden Abbildung wird beispielsweise eine Zelle der zweiten Ebene (15.11) völlig vom mittleren Teil eines Oktagons überlagert.
Eine abgedeckte Zelle wird gezählt und im Index erfasst, und die Zelle wird nicht weiter unterteilt.
Regeln für Zellen je Objekt
Der Grad der Tessellierung jedes Objekts hängt in erster Linie vom Grenzwert für Zellen pro Objekt des räumlichen Index ab. Dieses Limit legt die maximale Anzahl von Zellen fest, die die Tessellierung pro Objekt zählen kann. Beachten Sie jedoch, dass dieser Grenzwert überschritten werden kann, weil die Einhaltung der Zellen-pro-Objekt-Regel auf Ebene 1 nicht erzwungen wird. Wenn die Anzahl auf Ebene 1 den Grenzwert für Zellen pro Objekt erreicht oder überschreitet, erfolgt auf den unteren Ebenen keine weitere Tessellierung.
Solange die Anzahl unter dem Grenzwert für Zellen pro Objekt liegt, wird der Tessellierungsprozess fortgesetzt. Ausgehend von der berührten Zelle mit der niedrigsten Nummer (zum Beispiel Zelle 15,6 in der vorangehenden Abbildung) prüft der Prozess jede Zelle daraufhin, ob sie gezählt oder tesselliert werden soll. Wenn das Tessellieren einer Zelle den Grenzwert für Zellen pro Objekt überschreiten würde, wird die Zelle gezählt und nicht tesselliert. Andernfalls wird die Zelle in Kacheln unterteilt, und die Zellen der nächstniedrigeren Ebene, die vom Objekt berührt werden, werden gezählt. Der Tessellierungsprozess wird auf diese Weise in der Breite über die gesamte Ebene fortgesetzt. Dieser Prozess wird rekursiv für die Raster der tessellierten Zellen auf niedrigerer Ebene wiederholt, bis das Limit erreicht ist oder keine Zellen mehr zu zählen sind.
Betrachten Sie beispielsweise die vorherige Abbildung, die ein Achteck zeigt, das vollständig in Zelle 15 des Rasters der Ebene 1 liegt. In der Abbildung ist Zelle 15 tesselliert worden, wodurch das Oktagon in neun Zellen der Stufe 2 unterteilt wird. In dieser Illustration wird davon ausgegangen, dass der Zellen-pro-Objekt-Grenzwert gleich 9 oder höher ist. Wäre der Grenzwert für Zellen pro Objekt jedoch 8 oder weniger, würde Zelle 15 nicht tesselliert, und nur diese Zelle 15 würde für das Objekt gezählt.
In der Standardeinstellung ist der Zellen-pro-Objekt-Grenzwert mit 16 Zellen pro Objekt definiert, was für die meisten räumlichen Indizes einen zufriedenstellenden Kompromiss zwischen Raum und Genauigkeit darstellt. Die CREATE SPATIAL INDEXTransact-SQL-Anweisung unterstützt jedoch eine CELLS_PER_OBJECT =n-Klausel , mit der Sie eine Zell-pro-Objekt-Grenze zwischen 1 und 8192 (einschließlich) angeben können.
Note
Die cells_per_object -Einstellung eines räumlichen Index wird in der sys.spatial_index_tessellations -Katalogsicht angezeigt.
Deepest-Cell Regel
Bei der Tiefste-Zelle-Regel wird die Tatsache genutzt, dass jede Zelle einer untergeordneten Ebene zu der ihr übergeordneten Zelle gehört: Eine Zelle auf Ebene 4 gehört zu einer Zelle auf Ebene 3, eine Zelle auf Ebene 3 gehört zu einer Zelle auf Ebene 2, und eine Zelle auf Ebene 2 gehört zu einer Zelle auf Ebene 1. Zum Beispiel gehört ein Objekt, das zu Zelle 1.1.1.1 gehört, auch zu Zelle 1.1.1, Zelle 1.1 und Zelle 1. Die Kenntnis solcher Beziehungen in der Zellenhierarchie wurde in den Abfrageprozessor integriert. Daher müssen nur die Zellen der tiefsten Ebene im Index verzeichnet werden, sodass im Index nur die minimale Menge an Informationen gespeichert werden muss.
In der folgenden Abbildung wird ein relativ kleines rautenförmiges Polygon tesselliert. Für den Index wird der vordefinierte Zellen-pro-Objekt-Grenzwert 16 verwendet, die bei diesem kleinen Objekt nicht erreicht wird. Daher wird die Tessellation bis auf Ebene 4 fortgesetzt. Das Polygon befindet sich in den folgenden Zellen der Ebene 1 bis Ebene 3: 4, 4.4, 4.4.10 und 4.4.14. Bei Anwendung der Regel der tiefsten Zelle zählt die Tessellation jedoch nur die zwölf Zellen der Ebene 4: 4.4.10.13-15 und 4.4.14.1-3, 4.4.14.5-7 und 4.4.14.9-11.
Tessellationsmethoden
Das Verhalten eines räumlichen Indexes hängt teilweise von seinem Mosaikschemaab. Das Tessellierungsschema ist datentypspezifisch. In SQL Server werden zwei Tessellierungsschemata für räumliche Indizes unterstützt:
Geometrieraster-Tessellierung, das Schema für den Datentyp geometry.
Gitternetzunterteilung für geography, die auf Spalten des Datentyps geography angewendet wird.
Note
Die tessellation_scheme -Einstellung eines räumlichen Index wird in der sys.spatial_index_tessellations -Katalogansicht angezeigt.
Geometrieraster-Tessellationsschema
GEOMETRY_AUTO_GRID-Tessellierung ist das Standardtessellierungsschema für den Datentyp geometry für SQL Server 2012 (11.x) und höhere Versionen. Die GEOMETRY_GRID-Tessellierung ist das einzige Tessellierungsschema, das für Geometriedatentypen in SQL Server 2008 (10.0.x) verfügbar ist. In diesem Abschnitt werden Aspekte der Geometrie-Raster-Tessellation behandelt, die für die Arbeit mit Raumindizes relevant sind: unterstützte Methoden und Begrenzungsrahmen.
Note
Sie können dieses Tessellationsschema explizit mithilfe der USING-Klausel (GEOMETRY_AUTO_GRID/GEOMETRY_GRID) der CREATE SPATIAL INDEX Transact-SQL-Anweisung angeben.
Der Begrenzungsrahmen
Geometrische Daten belegen eine Fläche, die unendlich sein kann. In SQL Server erfordert ein räumlicher Index jedoch einen endlichen Raum. Um einen endlichen Raum für die Zerlegung festzulegen, erfordert das Tessellierungsschema des Geometrierasters eine rechteckige Bounding Box. Der Begrenzungsrahmen wird durch vier Koordinaten definiert, (x-min,y-min) und (x-max,y-max), die als Eigenschaften im räumlichen Index gespeichert werden. Diese Koordinaten stellen Folgendes dar:
x-min ist die X-Koordinate der unteren linken Ecke des Begrenzungsrahmens.
y-min ist die Y-Koordinate der unteren linken Ecke.
x-max ist die X-Koordinate der oberen rechten Ecke.
y-max ist die Y-Koordinate der oberen rechten Ecke.
Note
Diese Koordinaten werden durch die BOUNDING_BOX-Klausel der CREATE SPATIAL INDEXTransact-SQL-Anweisung angegeben.
Die Koordinaten (x-min,y-min) und (x-max,y-max) bestimmen die Position und die Abmessungen des Begrenzungsrahmens. Der Raum außerhalb des Begrenzungsrahmens wird als eine einzelne Zelle behandelt, die mit 0 nummeriert ist.
Der Raumindex unterteilt den Raum innerhalb der Bounding Box. Das Raster der Ebene 1 der Rasterhierarchie füllt den Begrenzungsrahmen aus. Um ein geometrisches Objekt in der Rasterhierarchie zu platzieren, vergleicht der räumliche Index die Koordinaten des Objekts mit den Koordinaten der Bounding-Box.
Die folgende Abbildung zeigt die durch die Koordinaten (x-min,y-min) und (x-max,y-max) des Begrenzungsrahmens definierten Punkte. Die oberste Ebene der Rasterhierarchie wird als 4×4-Raster angezeigt. Zur Veranschaulichung werden die niedrigeren Ebenen weggelassen. Der Bereich außerhalb des Begrenzungsrahmens wird durch eine Null (0) angegeben. Beachten Sie, dass Objekt 'A' teilweise über das Feld hinausragt und dass sich Objekt 'B' komplett außerhalb des Felds in Zelle 0 befindet.
Ein Begrenzungsrahmen entspricht einem Teil der räumlichen Daten einer Anwendung. Ob die Bounding-Box des Index die in der räumlichen Spalte gespeicherten Daten vollständig oder nur teilweise umfasst, hängt von der Anwendung ab. Nur Operationen, die auf Objekten ausgeführt werden, die sich vollständig innerhalb der Bounding-Box befinden, profitieren vom räumlichen Index. Um den größtmöglichen Vorteil aus einem räumlichen Index für eine geometry-Spalte zu ziehen, müssen Sie einen Begrenzungsrahmen angeben, der alle oder die meisten Objekte enthält.
Note
Die Rasterdichten eines räumlichen Index werden in den Spalten bounding_box_xmin, bounding_box_ymin, bounding_box_xmax und bounding_box_ymax der sys.spatial_index_tessellations -Katalogsicht angezeigt.
Das Tessellierungsschema des geografischen Rasters
Dieses Tessellationsschema gilt nur für eine Geografie-Spalte. In diesem Abschnitt werden die Methoden zusammengefasst, die von der Geografierasterunterteilung unterstützt werden, und es wird erläutert, wie der geodätische Raum auf eine Ebene projiziert und diese anschließend in eine Rasterhierarchie zerlegt wird.
Note
Sie können dieses Tessellationsschema explizit mithilfe der USING-Klausel (GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID) der CREATE SPATIAL INDEXTransact-SQL-Anweisung angeben.
Projektion des geodätischen Raums auf eine Ebene
In Berechnungen mit geography -Instanzen (Objekten) wird der Raum, der die Objekte enthält, als geodätisches Ellipsoid behandelt. Zur Unterteilung dieses Raums unterteilt das Geografieraster-Tessellierungsschema die Oberfläche des Ellipsoids in die obere und die untere Hemisphäre und führt dann die folgenden Schritte aus:
Jede Hemisphäre wird auf die Facetten einer vierseitigen Pyramide projiziert.
Flacht die beiden Pyramiden ab.
Verbindet die abgeflachten Pyramiden zu einer nicht-euklidischen Ebene.
In der folgenden Illustration wird dieser dreistufige Zerlegungsprozess schematisch dargestellt. In den Pyramiden stellen die gepunkteten Linien die Begrenzungen der vier Facetten jeder Pyramide dar. Die Schritte 1 und 2 veranschaulichen das geodätische Ellipsoid, wobei eine grüne waagrechte Linie den Breitengrad am Äquator und eine Reihe von grünen senkrechten Linien verschiedene Längengrade darstellt. Schritt 1 zeigt die Pyramiden, die über die zwei Hemisphären projiziert werden. Schritt 2 zeigt, wie die Pyramiden abgeflacht werden. Schritt 3 veranschaulicht die abgeflachten Pyramiden, nachdem sie zu einer Ebene zusammengefügt wurden, und zeigt eine Reihe projizierter Längengrade. Beachten Sie, dass diese projizierten Linien geglättet sind und eine unterschiedliche Länge haben, die davon abhängt, wo sie auf die Pyramiden auftreffen.
Nachdem der Raum auf eine Ebene projiziert wurde, wird der Raum in die vier Ebenen umfassende Rasterhierarchie zerlegt. In anderen Ebenen können andere Rasterdichten verwendet werden. Die folgende Abbildung zeigt die Ebene, nachdem sie in ein 4x4-Raster der Stufe 1 zerlegt wurde. Zur Veranschaulichung werden die niedrigeren Ebenen der Rasterhierarchie hier weggelassen. In Wirklichkeit wird die Ebene vollständig in eine vier Ebenen umfassende Rasterhierarchie zerlegt. Nachdem der Zerlegungsprozess abgeschlossen ist, werden die geographischen Daten zeilenweise aus der geography-Spalte gelesen, und der Tessellationsprozess wird nacheinander für jedes Objekt durchgeführt.
Von räumlichen Indizes unterstützte Methoden
Von räumlichen Indizes unterstützte Geometriemethoden
Räumliche Indizes unterstützen unter bestimmten Bedingungen die folgenden mengenorientierten geometry-Methoden: STContains(), STDistance(), STEquals(), STIntersects(), STOverlaps(), STTouches() und STWithin(). Diese Methoden werden nur dann von einem räumlichen Index unterstützt, wenn sie in der WHERE-Klausel oder JOIN ON-Klausel einer Abfrage verwendet werden und in einem Prädikat der folgenden allgemeinen Form stehen:
geometry1.method_name(geometry2)comparison_operator**valid_number
Um ein nicht-NULL-Ergebnis zurückzugeben, müssen geometry1 und geometry2 dieselbe Spatial Reference Identifier (SRID) haben. Anderenfalls gibt die Methode NULL zurück.
Räumliche Indizes unterstützen die folgenden Prädikatformen:
geometry1. STContains(geometry2) = 1
geometry1. STDistance(geometry2) <-Zahl
geometry1. STDistance(geometry2) <= Zahl
geometry1. STEquals(geometry2)= 1
geometry1. STIntersects(geometry2)= 1
geometry1.STOverlaps(geometry2) = 1
geometry1. STTouches(geometry2) = 1
geometry1. STWithin(geometry2)= 1
Durch räumliche Indizes unterstützte Geografiemethoden
Unter bestimmten Bedingungen unterstützen räumliche Indizes die folgenden mengenorientierten geography-Methoden: STIntersects(),STEquals() und STDistance(). Diese Methoden werden nur dann von einem räumlichen Index unterstützt, wenn sie in der WHERE-Klausel einer Abfrage verwendet werden und in einem Prädikat der folgenden allgemeinen Form stehen:
geography1.method_name(geography2)comparison_operator**valid_number
Damit ein Ergebnis ungleich NULL zurückgegeben wird, müssen geography1 und geography2 denselben Spatial Reference Identifier (SRID) haben. Anderenfalls gibt die Methode NULL zurück.
Räumliche Indizes unterstützen die folgenden Prädikatformen:
geography1. STIntersects(geography2)= 1
geografie1. STEquals(geografie2)= 1
geografie1. STDistance(geografie2) <number
geografie1. STDistance(geografie2) <= Zahl
Abfragen auf der Grundlage räumlicher Indizes
Räumliche Indizes werden nur in Abfragen unterstützt, die einen indizierten räumlichen Operator in der WHERE -Klausel enthalten. Beispielsyntax wie:
[spatial object].SpatialMethod([reference spatial object]) [ = | < ] [const literal or variable]
Der Abfrageoptimierer versteht die Vertauschbarkeit räumlicher Vorgänge ( @a.STIntersects(@b) = @b.STIntersects(@a) ). Der räumliche Index wird jedoch nicht verwendet, wenn am Anfang eines Vergleichs kein räumlicher Operator steht (bei WHERE 1 = spatial op wird z. B. kein räumlicher Index verwendet). Um den räumlichen Index zu verwenden, schreiben Sie den Vergleich um (z. B. WHERE spatial op = 1).
Wenn räumliche Indizes unterstützt werden, wird die Entscheidung für die Verwendung des räumlichen Indexes wie bei jedem anderen Index auf Basis der Kosten gefällt. So kann es sein, dass der räumliche Index vom Abfrageoptimierer nicht ausgewählt wird, auch wenn alle Voraussetzungen für die Nutzung dieses Indexes erfüllt sind. Verwenden Sie Showplan, um festzustellen, ob der räumliche Index verwendet wurde, und geben Sie ggf. Abfragehinweise an, um einen gewünschten Abfrageplan zu erzwingen.
Der nächste Nachbartyp der Abfrage unterstützt ebenfalls räumliche Indizes, allerdings erfordert dies eine bestimmte Abfragesyntax. Die erforderliche Syntax lautet:
SELECT TOP(K) [WITH TIES] *
FROM <Table> AS T [WITH(INDEX(<SpatialIndex>))]
WHERE <SpatialColumn>.STDistance(@reference_object) IS NOT NULL
ORDER BY <SpatialColumn>.STDistance(@reference_object) [;]