Übersicht über räumliche Indizes

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.

Wichtiger HinweisWichtig

Laden Sie für eine ausführliche Beschreibung und Beispiele der neuen räumlichen Funktionen in dieser Version (z. B. Funktionen, die räumliche Indizes beeinflussen) das Whitepaper Neue räumliche Funktionen in SQL Server 2012 herunter.

In diesem Thema

  • Informationen zu räumlichen Indizes

    • Zerlegen von indiziertem Raum in eine Rasterhierarchie

    • Mosaik

    • Mosaikschemas

  • Von räumlichen Indizes unterstützte Methoden

    • Von räumlichen Indizes unterstützte geometry-Methoden

    • Von räumlichen Indizes unterstützte geography-Methoden

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 Rasterhierarchie zerlegt. Diese Ebenen werden als Ebene 1 (die oberste Ebene), Ebene 2, Ebene 3 und Ebene 4 bezeichnet.

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ß.

In der folgenden Abbildung wird dargestellt, wie die rechte obere Zelle auf jeder Ebene der Rasterhierarchie in ein Raster der Größe 4 x 4 zerlegt wird. 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, resultieren daraus insgesamt 65.536 Zellen auf Ebene 4.

Vier Ebenen des rekursiven Mosaiks

HinweisHinweis

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.

Polygone und Linien in einem 4x4-Raster der Ebene 1 platziert

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.

In der CREATE SPATIAL INDEX Transact-SQL-Anweisung kann eine GRIDS-Klausel angegeben werden, die es ermöglicht, für verschiedene Ebenen verschiedene Rasterdichten anzugeben. Die Rasterdichte für eine gegebene Ebene wird mit einem der folgenden Schlüsselwörter angegeben:

Schlüsselwort

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.

Sie können den Zerlegungsprozess steuern, indem Sie nicht standardmäßige Rasterdichten angeben. Beispielsweise können verschiedene Dichten auf verschiedenen Ebenen hilfreich sein, um einen Index auf die Größe des indizierten Raums und der Objekte in der räumlichen Spalte fein abzustimmen.

HinweisHinweis

Die Rasterdichten eines räumlichen Indexes 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. Diese Spalten werden nicht von den GEOMETRY_AUTO_GRID/GEOGRAPHY_AUTO_GRID-Mosaikschemaoptionen aufgefüllt. Die sys.spatial_index_tessellations-Katalogsicht enthält NULL-Werte für diese Spalten, wenn die automatischen Rasteroptionen verwendet werden.

NACH OBEN

Mosaik

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 die Daten für ein räumliches Objekt (bzw. eine räumliche Instanz) gelesen wurden, wird unter Verwendung des räumlichen Indexes ein Mosaikprozess für dieses Objekt durchgeführt. Durch den Mosaikprozesswird das Objekt in die Rasterhierarchie eingepasst, indem das Objekt der Menge von Rasterzellen zugeordnet wird, die es berührt (berührte Zellen). Auf Ebene 1 der Rasterhierarchie beginnend, verläuft der Mosaikprozess breitenorientiert über der Ebene. Potenziell kann der Prozess über alle vier Ebenen fortgesetzt werden, wobei zu einem Zeitpunkt jeweils nur eine Ebene bearbeitet werden kann.

Ergebnis des Mosaikprozesses ist eine Menge berührter Zellen, die im räumlichen Index für das betreffende Objekt verzeichnet sind. 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.

Mosaikregeln

Um die Anzahl berührter Zellen zu beschränken, die für ein Objekt verzeichnet werden, werden im Mosaikprozess einige Mosaikregeln berücksichtigt. Diese Regeln bestimmen die Tiefe des Mosaikprozesses, und sie legen fest, welche der berührten Zellen im räumlichen Index verzeichnet werden.

Nachfolgend sind diese Regeln aufgeführt:

  • Die Überlagerungsregel

    Wenn das Objekt eine Zelle völlig bedeckt, heißt es, dass die Zelle vom Objekt überlagert wird. Eine überlagerte Zelle wird gezählt und nicht im Mosaikprozess berücksichtigt. Diese Regel ist auf allen Ebenen der Rasterhierarchie gültig. Die Überlagerungsregel vereinfacht den Mosaikprozess und verringert die Datenmenge, die in einem räumlichen Index aufgezeichnet 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 Tiefste-Zelle-Regel generiert die beste Näherung für ein Objekt, indem nur die Zellen der untersten Ebene aufgezeichnet werden, die im Mosaikprozess für das Objekt berücksichtigt wurden. Übergeordnete Zellen tragen nicht zur Zellen-pro-Objekt-Anzahl bei, und sie werden nicht im Index aufgezeichnet.

Diese Mosaikregeln werden rekursiv auf jeder Rasterebene angewendet. Im restlichen Teil dieses Abschnitts werden diese Mosaikregeln eingehender beschrieben.

Überlagerungsregel

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.

Überlagerungsoptimierung

Überlagerte Zellen werden gezählt und im Index verzeichnet. Diese Zellen unterliegen dem Mosaikprozess nicht weiter.

Zellen-pro-Objekt-Regel

Inwieweit ein Objekt dem Mosaikprozess unterliegt, hängt hauptsächlich vom Zellen-pro-Objekt-Grenzwert des räumlichen Index ab. Dieser Grenzwert definiert die maximale Anzahl von Zellen, die das Mosaik pro Objekt umfassen 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 Zellen-pro-Objekt-Grenzwert erreicht oder überschreitet, wird der Mosaikprozess auf den unteren Ebenen nicht weiter fortgesetzt.

Solange die Anzahl kleiner als der Zellen-pro-Objekt-Grenzwert ist, wird der Mosaikprozess fortgesetzt. Beginnend mit der überlagerten Zelle mit der niedrigsten Anzahl (in der vorstehenden Abbildung beispielsweise Zelle 15,6), werden in diesem Prozess alle Zellen daraufhin überprüft, ob sie gezählt oder weiter zusammengesetzt werden sollen. Wenn eine Zelle bei einer weiteren Mosaikbearbeitung den Zellen-pro-Objekt-Grenzwert übersteigen würde, wird die Zelle gezählt und nicht weiter dem Mosaikprozess unterzogen. Andernfalls wird die Zelle im Mosaikprozess berücksichtigt, und es werden die Zellen der untergeordneten Ebene gezählt, die vom Objekt überlagert werden. Der Mosaikprozess wird auf diese Art breitenorientiert über die gesamte Ebene hinweg fortgesetzt. Dieser Prozess wird solange rekursiv in den Rastern untergeordneter Ebenen des Mosaikprozesses fortgesetzt, bis der Grenzwert erreicht wird oder keine zu zählenden Zellen mehr vorhanden sind.

Betrachten Sie beispielsweise die vorstehende Abbildung, die ein Oktagon zeigt, das vollständig in Zelle 15 des Rasters der Ebene 1 passt. In der Abbildung wurde Zelle 15 dem Mosaikprozess unterzogen, wodurch das Oktagon in neun Zellen der Ebene 2 zerlegt wurde. In dieser Illustration wird davon ausgegangen, dass der Zellen-pro-Objekt-Grenzwert gleich 9 oder höher ist. Wäre der Zellen-pro-Objekt-Grenzwert gleich 8 oder kleiner, dann würde Zelle 15 nicht im Mosaikprozess berücksichtigt, und nur diese eine 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. In der CREATE SPATIAL INDEX Transact-SQL-Anweisung kann jedoch eine CELLS_PER_OBJECT**=**n-Klausel angegeben werden, die es Ihnen ermöglicht, einen Zellen-pro-Objekt-Grenzwert zwischen 1 und 8192 (einschließlich) festzulegen.

HinweisHinweis

Die cells_per_object-Einstellung eines räumlichen Index wird in der sys.spatial_index_tessellations-Katalogsicht angezeigt.

Tiefste-Zelle-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 durch den Mosaikprozess unterteilt. Für den Index wird der vordefinierte Zellen-pro-Objekt-Grenzwert 16 verwendet, die bei diesem kleinen Objekt nicht erreicht wird. Deshalb wird der Mosaikprozess bis zu 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 Verwendung der Tiefste-Zelle-Regel zählt das Mosaik jedoch nur die 12 Zellen auf Ebene 4: 4.4.10.13-15, 4.4.14.1-3, 4.4.14.5-7 und 4.4.14.9-11.

Tiefste-Zelle-Optimierung

NACH OBEN

Mosaikschemas

Das Verhalten eines räumlichen Indexes hängt teilweise von seinem Mosaikschema ab. Das Mosaikschema ist datentypspezifisch. In SQL Server werden zwei Mosaikschemas für räumliche Indizes unterstützt:

  • Das Geometrieraster-Mosaikschema, das als Schema für den geometry-Datentyp vorgesehen ist.

  • Geografierastermosaik, das für Spalten des geography-Datentyps gilt.

HinweisHinweis

Die tessellation_scheme-Einstellung eines räumlichen Indexes wird in der sys.spatial_index_tessellations-Katalogsicht angezeigt.

Geometrieraster-Mosaikschema

Das GEOMETRY_AUTO_GRID-Mosaik ist das Standardschema für den geometry-Datentyp für SQL Server und höher. Das GEOMETRY_GRID-Mosaik ist das einzige Mosaikschema, das für geometry-Datentypen in SQL Server verfügbar ist. In diesem Abschnitt werden die Aspekte des Geometrierastermosaikschemas behandelt, die für die Arbeit mit räumlichen Indizes relevant sind: unterstützte Methoden und umgebende Felder.

HinweisHinweis

Dieses Mosaikschema kann mit der USING (GEOMETRY_AUTO_GRID/GEOMETRY_GRID)-Klausel der CREATE SPATIAL INDEX Transact-SQL-Anweisung explizit angegeben werden.

Das umgebende Feld

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 einzurichten, erfordert das Geometrierastermosaikschema ein rechteckiges umgebendes Feld. Das umgebende Feld wird durch vier Koordinaten definiert, (x-min,y-min) und (x-max,y-max), die als Eigenschaften des räumlichen Index gespeichert werden. Diese Koordinaten stellen Folgendes dar:

  • x-min ist die X-Koordinate der linken unteren Ecke des umgebenden Felds.

  • 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.

HinweisHinweis

Diese Koordinaten werden in der BOUNDING_BOX-Klausel der CREATE SPATIAL INDEX Transact-SQL-Anweisung angegeben.

Die Koordinaten (x-min,y-min) und (x-max,y-max) bestimmen die Position und die Größe des umgebenden Felds. Der Raum außerhalb des umgebenden Felds wird als einzelne Zelle behandelt, die die Nummer 0 erhält.

Der räumliche Index zerlegt den Raum im umgebenden Feld. Das Raster der Ebene 1 der Rasterhierarchie füllt das umgebende Feld aus. Zur Platzierung eines geometrischen Objekts in der Rasterhierarchie vergleicht der räumliche Index die Koordinaten des Objekts mit den Koordinaten des umgebenden Felds.

Die folgende Abbildung zeigt die Punkte, die durch die Koordinaten **(x-min)**y-min und **(x-max)**y-max des umgebenden Felds definiert werden. Die obersten Ebene der Rasterhierarchie wird als 4 x 4-Raster angezeigt. Zur Veranschaulichung werden die niedrigeren Ebenen weggelassen. Der Raum außerhalb des umgebenden Felds 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.

Umgebendes Feld mit Koordinaten und Zelle 0

Ein umgebendes Feld entspricht zu einem gewissen Teil den räumlichen Daten einer Anwendung. Ob das umgebende Feld des Indexes die in der räumlichen Spalte gespeicherten Daten vollständig oder nur zum Teil enthält, hängt von der Anwendung ab. Nur Vorgänge, die mit Objekten berechnet werden, die vollständig im umgebenden Feld liegen, profitieren vom räumlichen Index. Damit der räumliche Index für eine geometry-Spalte den größtmöglichen Nutzen bietet, müssen Sie ein umgebendes Feld angeben, das alle oder die meisten Objekte enthält.

HinweisHinweis

Die Rasterdichten eines räumlichen Indexes 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 Geografierastermosaikschema

Dieses Mosaikschema gilt nur für geography-Spalten. In diesem Abschnitt werden die Methoden zusammengefasst, die vom Geografierastermosaikschema unterstützt werden, und es wird erläutert, wie geodätischer Raum auf eine Ebene projiziert wird, die dann in eine Rasterhierarchie zerlegt wird.

HinweisHinweis

Dieses Mosaikschema kann mit der USING (GEOGRAPHY_AUTO_GRID/GEOGRAPHY_GRID)-Klausel der CREATE SPATIAL INDEX Transact-SQL-Anweisung explizit angegeben werden.

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 Zerlegung dieses Raums unterteilt das Geografierastermosaikschema die Oberfläche des Ellipsoids in eine obere und eine untere Hemisphäre und führt dann die folgenden Schritte aus:

  1. Jede Hemisphäre wird auf die Facetten einer vierseitigen Pyramide projiziert.

  2. Die beiden Pyramiden werden auf eine Ebene reduziert.

  3. Die vereinfachten Pyramiden werden verbunden, sodass sie eine nicht-euklidische Ebene bilden.

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 Längengrad am Äquator und eine Reihe von grünen senkrechten Linien verschiedene Breitengrade darstellt. Schritt 1 zeigt die Pyramiden, die über die zwei Hemisphären projiziert werden. Schritt 2 zeigt, wie die Pyramiden auf eine Ebene reduziert werden. Schritt 3 veranschaulicht die reduzierten Pyramiden, nachdem diese zu einer Ebene kombiniert wurden, und zeigt einige projizierte 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.

Projektion des Ellipsoids auf eine Ebene

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 Illustration zeigt die Ebene, nachdem sie in ein 4 x 4-Raster der Ebene 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. Nach Abschluss des Zerlegungsprozesses werden die geografischen Daten zeilenweise aus der geography-Spalte gelesen, und der Mosaikprozess wird wiederum für jedes Objekt durchgeführt.

Geografieraster der Ebene 1

NACH OBEN

Von räumlichen Indizes unterstützte Methoden

Von räumlichen Indizes unterstützte geometry-Methoden

Unter bestimmten Bedingungen unterstützen räumliche Indizes 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

Es wird nur dann ein Ergebnis ungleich Null zurückgegeben, wenn geometry1 und geometry2 über den gleichen SRID (Spatial Reference Identifier) verfügen. Anderenfalls gibt die Methode NULL zurück.

Räumliche Indizes unterstützen die folgenden Prädikatformen:

NACH OBEN

Von räumlichen Indizes unterstützte geography-Methoden

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

Es wird nur dann ein Ergebnis ungleich NULL zurückgegeben, wenn geography1 und geography2 über den gleichen SRID (Spatial Reference Identifier) verfügen. Anderenfalls gibt die Methode NULL zurück.

Räumliche Indizes unterstützen die folgenden Prädikatformen:

NACH OBEN

Abfragen, die räumliche Indizes verwenden

Räumliche Indizes werden nur in Abfragen unterstützt, die einen indizierten räumlichen Operator in der WHERE-Klausel enthalten. Die Syntax sieht beispielsweise wie folgt aus:

[spatial object].SpatialMethod([reference spatial object]) [ = | < ] [const literal or variable]

Der Abfrageoptimierer versteht die Vertauschbarkeit räumlicher Vorgänge (@a.STIntersects(@b) = @b.STInterestcs(@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.

Räumliche Indizes werden auch von Nächster Nachbar-Abfragen unterstützt. Dazu muss jedoch eine bestimmte Abfragesyntax verwendet werden. Dei richtige Syntax lautet wie folgt:

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) [;]

NACH OBEN

Siehe auch

Konzepte

Räumliche Daten (SQL Server)