CREATE SPATIAL INDEX (Transact-SQL)

Erstellt für eine angegebene Tabelle und Spalte einen räumlichen Index. Ein Index kann erstellt werden, bevor Daten in der Tabelle enthalten sind. Indizes können für Tabellen oder Sichten einer anderen Datenbank durch Angabe eines gekennzeichneten Datenbanknamens erstellt werden.

HinweisHinweis

Informationen zu räumlichen Indizes finden Sie unter Übersicht über räumliche Indizierung.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

Create Spatial Index 
CREATE SPATIAL INDEX index_name 
  ON <object> ( spatial_column_name )
    {
       [ USING <geometry_grid_tessellation> ]
          WITH ( <bounding_box> 
                [ [,] <tesselation_parameters> [ ,...n ] ] 
                [ [,] <spatial_index_option> [ ,...n ] ] ) 
     | [ USING <geography_grid_tessellation> ] 
          [ WITH ( [ <tesselation_parameters> [ ,...n ] ]
                   [ [,] <spatial_index_option> [ ,...n ] ] ) ]
    } 
  [ ON { filegroup_name | "default" } ]
; 

<object> ::=
    [ database_name. [ schema_name ] . | schema_name. ] 
                table_name

<geometry_grid_tessellation> ::=
{ GEOMETRY_GRID }
  
<bounding_box> ::=
BOUNDING_BOX = ( {
        xmin, ymin, xmax, ymax 
   | <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate> 
  } )

<named_bb_coordinate> ::= { XMIN = xmin | YMIN = ymin | XMAX = xmax | YMAX=ymax }

<tesselation_parameters> ::=
{ 
    GRIDS = ( { <grid_density> [ ,...n ] | <density>, <density>, <density>, <density>  } ) 
  | CELLS_PER_OBJECT = n 
}

<grid_density> ::=
{
     LEVEL_1 = <density> 
  |  LEVEL_2 = <density> 
  |  LEVEL_3 = <density> 
  |  LEVEL_4 = <density> 
}

<density> ::= { LOW | MEDIUM | HIGH }

<geography_grid_tessellation> ::= 
{ GEOGRAPHY_GRID }
  
<spatial_index_option> ::=
{
    PAD_INDEX = { ON | OFF }
  | FILLFACTOR = fillfactor
  | SORT_IN_TEMPDB = { ON | OFF }
  | IGNORE_DUP_KEY = OFF
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | DROP_EXISTING = { ON | OFF }
  | ONLINE = OFF
  | ALLOW_ROW_LOCKS = { ON | OFF }
  | ALLOW_PAGE_LOCKS = { ON | OFF }
  | MAXDOP = max_degree_of_parallelism
}

Argumente

  • index_name
    Der Name des Index. Indexnamen müssen für eine Tabelle eindeutig sein, können jedoch innerhalb einer Datenbank mehrfach vorkommen. Indexnamen müssen den Regeln für Bezeichner entsprechen.

  • ON <object> ( spatial_column_name )
    Gibt das Objekt (Datenbank, Schema oder Tabelle), für das der Index erstellt werden soll, sowie den Namen der räumlichen Spalte an.

    spatial_column_name gibt die räumliche Spalte an, auf der der Index basiert. Für die Definition eines einzelnen räumlichen Index kann nur eine räumliche Spalte angegeben werden. Allerdings können für eine geometry-Spalte oder eine geography-Spalte mehrere Räumlichkeitsindizes erstellt werden.

  • USING
    Gibt das Mosaikschema für den räumlichen Index an. Dieser Parameter wird wie im Folgenden dargestellt standardmäßig auf den typspezifischen Wert festgelegt:

    Datentyp der Spalte

    Mosaikschema

    geometry

    GEOMETRY_GRID

    geography

    GEOGRAPHY_GRID

    Ein Räumlichkeitsindex kann nur für eine Spalte des Typs geometry oder geography erstellt werden. Andernfalls wird ein Fehler ausgelöst. Ein Fehler wird auch dann ausgelöst, wenn für einen bestimmten Typ ein ungültiger Parameter übergeben wird.

    HinweisHinweis

    Informationen darüber, wie in SQL Server ein Mosaik implementiert wird, finden Sie unter Übersicht über räumliche Indizierung.

  • ON filegroup_name
    Erstellt den angegebenen Index für die angegebene Dateigruppe. Wenn kein Speicherort angegeben und die Tabelle nicht partitioniert ist, verwendet der Index die gleiche Dateigruppe wie die zugrunde liegende Tabelle. Die Dateigruppe muss bereits vorhanden sein.

  • ON "default**"**
    Erstellt den angegebenen Index für die Standarddateigruppe.

    Der Begriff "default" ist in diesem Kontext kein Schlüsselwort. Er ist ein Bezeichner für die Standarddateigruppe und muss begrenzt sein, wie z. B. in ON "default" oder ON [default]. Wenn "default" angegeben ist, muss die Option QUOTED_IDENTIFIER für die aktuelle Sitzung auf ON festgelegt sein. Dies ist die Standardeinstellung. Weitere Informationen finden Sie unter SET QUOTED_IDENTIFIER (Transact-SQL).

<object>::=

Gibt das vollqualifizierte oder nicht vollqualifizierte Objekt an, das indiziert werden soll.

  • database_name
    Der Name der Datenbank.

  • schema_name
    Der Name des Schemas, zu dem die Tabelle gehört.

  • table_name
    Der Name der Tabelle, die indiziert werden soll.

WITH-Optionen

  • GEOMETRY_GRID
    Gibt das verwendete Mosaikschema für das Geometrieraster an. GEOMETRY_GRID kann nur für eine Spalte vom Datentyp geometry angegeben werden. Dies ist der Standardwert für diesen Datentyp. Eine Angabe ist nicht erforderlich.

  • GEOGRAPHY_GRID
    Gibt das Mosaikschema für das Geografieraster an. GEOGRAPHY_GRID kann nur für eine Spalte vom Datentyp geography angegeben werden. Dies ist der Standardwert für diesen Datentyp. Eine Angabe ist nicht erforderlich.

  • BOUNDING_BOX
    Gibt ein aus vier Werten bestehendes numerisches Tupel zurück, das die vier Koordinaten des umgebenden Felds definiert: die minimale X- und die minimale Y-Koordinate der unteren linken Ecke und die maximale X- und die maximale Y-Koordinate der oberen rechten Ecke.

    • xmin
      Gibt die X-Koordinate der unteren linken Ecke des umgebenden Felds an.

    • ymin
      Gibt die Y-Koordinate der unteren linken Ecke des umgebenden Felds an.

    • xmax
      Gibt die X-Koordinate der oberen rechten Ecke des umgebenden Felds an.

    • ymax
      Gibt die Y-Koordinate der oberen rechten Ecke des umgebenden Felds an.

    • XMIN = xmin
      Gibt den Eigenschaftsnamen und -wert für die X-Koordinate der unteren linken Ecke des umgebenden Felds an.

    • YMIN = ymin
      Gibt den Eigenschaftsnamen und -wert für die Y-Koordinate der unteren linken Ecke des umgebenden Felds an.

    • XMAX = xmax
      Gibt den Eigenschaftsnamen und -wert für die X-Koordinate der oberen rechten Ecke des umgebenden Felds an.

    • YMAX = ymax
      Gibt den Eigenschaftsnamen und -wert für die Y-Koordinate der oberen rechten Ecke des umgebenden Felds an.

    Die Koordinaten des umgebenden Felds gelten nur in einer USING GEOMETRY_GRID-Klausel.

    xmax muss größer als xmin und ymax muss größer als ymin sein. Sie können jede gültige Darstellung eines float-Werts verwenden, vorausgesetzt, dass xmax > xmin und ymax > ymin ist. Andernfalls werden die entsprechenden Fehler ausgelöst.

    Es gibt keine Standardwerte.

    Bei den Eigenschaftsnamen für umgebende Felder wird, unabhängig von der Datenbanksortierung, die Groß- und Kleinschreibung nicht beachtet.

    Eigenschaftsnamen müssen jeweils nur einmal angegeben werden. Sie können in einer beliebigen Reihenfolge angegeben werden. Beispielsweise sind die folgenden Klauseln gleichwertig:

    • BOUNDING_BOX = ( XMIN = xmin, YMIN = ymin, XMAX = xmax, YMAX = ymax )

    • BOUNDING_BOX = ( XMIN = xmin, XMAX = xmax, YMIN = ymin, YMAX = ymax )

  • GRIDS
    Definiert die Dichte des Rasters auf jeder Ebene eines Mosaikschemas.

    HinweisHinweis

    Informationen zu Mosaiken finden Sie unter Übersicht über räumliche Indizierung.

    Die GRIDS-Parameter lauten wie folgt:

    • LEVEL_1
      Gibt das Raster der obersten (höchsten) Ebene an.

    • LEVEL_2
      Gibt das Raster der zweiten Ebene an.

    • LEVEL_3
      Gibt das Raster der dritten Ebene an.

    • LEVEL_4
      Gibt das Raster der vierten Ebene an.

    • LOW
      Gibt die niedrigste mögliche Dichte für das Raster auf einer bestimmten Ebene an. LOW entspricht 16 Zellen (4 x 4-Raster).

    • MEDIUM
      Gibt die mittlere Dichte für das Raster auf einer bestimmten Ebene an. MEDIUM entspricht 64 Zellen (8 x 8-Raster).

    • HIGH
      Gibt die höchste mögliche Dichte für das Raster auf einer bestimmten Ebene an. HIGH entspricht 256 Zellen (16 x 16-Raster).

    Mithilfe von Ebenennamen können Sie die Ebenen in einer beliebigen Reihenfolge angeben oder Ebenen auslassen. Wenn Sie den Namen einer Ebene verwenden, müssen Sie auch die Namen aller anderen angegebenen Ebenen verwenden. Wenn Sie eine Ebene auslassen, wird deren Dichte standardmäßig auf MEDIUM festgelegt.

    Bei Angabe einer ungültigen Dichte wird ein Fehler ausgelöst.

  • CELLS_PER_OBJECT = n
    Gibt die Anzahl von Zellen pro Objekt für das Mosaik an, die vom Mosaikprozess für ein einzelnes räumliches Objekt im Index verwendet werden können. Bei n kann es sich um jede ganze Zahl von 1 bis einschließlich 8192 handeln. Standardmäßig sind 16 Zellen pro Objekt vorgegeben. Wenn für das angegebene Mosaik eine ungültige Anzahl übergeben wird oder die Anzahl die maximal zulässige Anzahl von Zellen überschreitet, wird ein Fehler ausgelöst.

    Wenn auf höchster Ebene ein Objekt mehr Zellen abdeckt, als durch n angegeben sind, verwendet die Indizierung die Anzahl von Zellen, die zum Bereitstellen eines vollständigen Mosaiks der höchsten Ebene erforderlich sind. In solchen Fällen ist es möglich, dass ein Objekt mehr als die angegebene Anzahl von Zellen erhält. Die maximale Anzahl ist dann die Anzahl von Zellen, die vom Raster der höchsten Ebene generiert wird und von der Dichte abhängt.

    Der CELLS_PER_OBJECT-Wert wird von der Zellen-pro-Objekt-Mosaikregel verwendet. Informationen zu den Mosaikregeln finden Sie unter Übersicht über räumliche Indizierung.

  • PAD_INDEX = { ON | OFF }
    Gibt den Indexabstand an. Die Standardeinstellung ist OFF.

    • ON
      Der Prozentsatz des mit fillfactor angegebenen freien Speicherplatzes wird für die Zwischenebenenseiten des Index angewendet.

    • OFF oder fillfactor ist nicht angegeben.
      Die Zwischenebenenseiten sind nahezu vollständig aufgefüllt. Allerdings ist ausreichend Speicherplatz vorhanden, um mindestens eine Zeile in der maximal für den Index möglichen Größe aufzunehmen, wenn der Schlüsselsatz auf den Zwischenseiten berücksichtigt wird.

    Die Option PAD_INDEX ist nur dann hilfreich, wenn FILLFACTOR angegeben ist, da PAD_INDEX den durch FILLFACTOR angegebenen Prozentsatz verwendet. Wenn der für FILLFACTOR angegebene Prozentsatz nicht groß genug ist, um eine Zeile aufzunehmen, setzt Database Engine (Datenbankmodul) diesen Prozentsatz intern außer Kraft, um das Minimum zuzulassen. Auf jeder Zwischenindexseite befinden sich unabhängig vom angegebenen fillfactor-Wert nie weniger als zwei Zeilen.

  • FILLFACTOR = fillfactor
    Gibt einen Prozentwert an, der dem Füllfaktor entspricht. Dieser Faktor legt fest, wie weit Database Engine (Datenbankmodul) die Blattebene jeder Indexseite während der Indexerstellung oder -neuerstellung auffüllen soll. fillfactor muss ein ganzzahliger Wert zwischen 1 und 100 sein. Der Standardwert ist 0. Wenn fillfactor 100 oder 0 entspricht, werden von Database Engine (Datenbankmodul) Indizes mit vollständig aufgefüllten Blattseiten erstellt.

    HinweisHinweis

    Die Füllfaktorwerte 0 und 100 sind in jeder Hinsicht identisch.

    Die FILLFACTOR-Einstellung gilt nur, wenn der Index erstellt oder neu erstellt wird. Database Engine (Datenbankmodul) hält den angegebenen Prozentsatz des Speicherplatzes nicht dynamisch auf den Seiten frei. Zum Anzeigen der Füllfaktoreinstellung verwenden Sie die Katalogsicht sys.indexes.

    Wichtiger HinweisWichtig

    Das Erstellen eines gruppierten Index mit einem FILLFACTOR-Wert unter 100 wirkt sich auf den Speicherplatz aus, den die Daten belegen, da Database Engine (Datenbankmodul) die Daten beim Erstellen des gruppierten Index neu verteilt.

    Weitere Informationen finden Sie unter Füllfaktor.

  • SORT_IN_TEMPDB = { ON | OFF }
    Gibt an, ob temporäre Ergebnisse des Sortierens in "tempdb" gespeichert werden sollen. Die Standardeinstellung ist OFF.

    • ON
      Die Zwischenergebnisse von Sortierungen, mit denen der Index erstellt wird, werden in "tempdb" gespeichert. Diese Option verringert möglicherweise den Zeitaufwand, der mit der Erstellung eines Index verbunden ist, wenn sich "tempdb" auf einem anderen Datenträgersatz befindet als die Benutzerdatenbank. Allerdings wird dadurch die Menge an Speicherplatz erhöht, die während der Indexerstellung verwendet wird.

    • OFF
      Die Zwischenergebnisse des Sortierens werden in derselben Datenbank wie der Index gespeichert.

    Zusätzlich zu dem Speicherplatz, der in der Benutzerdatenbank zum Erstellen des Index erforderlich ist, benötigt "tempdb" ungefähr die gleiche Menge an zusätzlichem Speicherplatz, um die Zwischenergebnisse des Sortierens zu speichern. Weitere Informationen finden Sie unter tempdb und Indexerstellung.

  • IGNORE_DUP_KEY = OFF
    Hat keine Auswirkungen auf Räumlichkeitsindizes, da der Indextyp nie eindeutig ist. Legen Sie diese Option nicht auf ON fest, andernfalls wird ein Fehler ausgelöst.

  • STATISTICS_NORECOMPUTE = { ON | OFF}
    Gibt an, ob Verteilungsstatistiken neu berechnet werden. Die Standardeinstellung ist OFF.

    • ON
      Veraltete Statistiken werden nicht automatisch neu berechnet.

    • OFF
      Das automatische Aktualisieren von Statistiken ist aktiviert.

    Um das automatische Aktualisieren von Statistiken wiederherzustellen, müssen Sie STATISTICS_NORECOMPUTE auf OFF festlegen oder die UPDATE STATISTICS-Anweisung ohne die NORECOMPUTE-Klausel ausführen.

    Wichtiger HinweisWichtig

    Wenn Sie die automatische Neuberechnung von Verteilungsstatistiken deaktivieren, wählt der Abfrageoptimierer möglicherweise nicht die optimalen Ausführungspläne für Abfragen, die sich auf die Tabelle beziehen.

  • DROP_EXISTING = { ON | OFF }
    Gibt an, dass der benannte, bereits vorhandene räumliche Index gelöscht und neu erstellt wird. Die Standardeinstellung ist OFF.

    • ON
      Der vorhandene Index wird gelöscht und neu erstellt. Der angegebene Indexname muss mit dem eines derzeit vorhandenen Index übereinstimmen. Die Indexdefinition kann jedoch geändert werden. Sie können beispielsweise andere Spalten, eine andere Sortierreihenfolge, ein anderes Partitionsschema oder andere Indexoptionen angeben.

    • OFF
      Es wird ein Fehler angezeigt, wenn der angegebene Indexname bereits vorhanden ist.

    Der Indextyp kann nicht mithilfe von DROP_EXISTING geändert werden.

  • ONLINE = OFF
    Gibt an, dass zugrunde liegende Tabellen oder zugehörige Indizes für Abfragen und Datenänderungen während des Indexvorgangs nicht zur Verfügung stehen. In dieser Version von SQL Server werden Onlineindexerstellungen für Räumlichkeitsindizes nicht unterstützt. Wenn diese Option für einen räumlichen Index auf ON festgelegt ist, wird ein Fehler ausgelöst. Lassen Sie die ONLINE-Option weg, oder legen Sie ONLINE auf OFF fest.

    Ein Offlineindexvorgang, der einen räumlichen Index erstellt, neu erstellt oder löscht, aktiviert eine Schemaänderungssperre (Sch-M) für die Tabelle. Auf diese Weise wird der Benutzerzugriff auf die zugrunde liegende Tabelle für die Dauer des Vorgangs verhindert.

    HinweisHinweis

    Onlineindexvorgänge sind nur in der SQL Server Enterprise, Developer und Evaluation Edition verfügbar.

  • ALLOW_ROW_LOCKS = { ON | OFF }
    Gibt an, ob Zeilensperren zulässig sind. Der Standardwert ist ON.

    • ON
      Zeilensperren sind beim Zugriff auf den Index zulässig. Database Engine (Datenbankmodul) legt fest, wann Zeilensperren verwendet werden.

    • OFF
      Es werden keine Zeilensperren verwendet.

  • ALLOW_PAGE_LOCKS = { ON | OFF }
    Gibt an, ob Seitensperren zulässig sind. Der Standardwert ist ON.

    • ON
      Seitensperren sind beim Zugriff auf den Index zulässig. Database Engine (Datenbankmodul) legt fest, wann Seitensperren verwendet werden.

    • OFF
      Es werden keine Seitensperren verwendet.

  • MAXDOP = max_degree_of_parallelism
    Setzt die Konfigurationsoption Max. Grad an Parallelität für die Dauer des Indexvorgangs außer Kraft. Sie können mit MAXDOP die Anzahl der Prozessoren begrenzen, die bei der Ausführung paralleler Pläne verwendet werden. Der Höchstwert ist 64 Prozessoren.

    Wichtiger HinweisWichtig

    Obwohl die MAXDOP-Option syntaktisch unterstützt wird, verwendet CREATE SPATIAL INDEX derzeit immer nur einen einzelnen Prozessor.

    Mögliche Werte für max_degree_of_parallelism sind:

    • 1
      Unterdrückt das Generieren paralleler Pläne.

    • >1
      Beschränkt die maximale Anzahl der Prozessoren, die bei einem parallelen Indexvorgang verwendet werden, je nach aktueller Systemauslastung auf die angegebene Zahl oder einen niedrigeren Wert.

    • 0 (Standardwert)
      Verwendet je nach aktueller Systemauslastung die tatsächliche oder eine geringere Anzahl von Prozessoren.

    Weitere Informationen finden Sie unter Konfigurieren von Parallelindexvorgänge.

    HinweisHinweis

    Parallele Indexvorgänge sind nur in der SQL Server Enterprise, Developer und Evaluation Edition verfügbar.

Hinweise

Eine Einführung in die räumliche Indizierung in SQL Server finden Sie unter Übersicht über räumliche Indizierung.

Jede Option kann pro CREATE SPATIAL INDEX-Anweisung nur einmal angegeben werden. Durch das doppelte Angeben einer Option wird ein Fehler ausgelöst.

Sie können bis zu 249 Räumlichkeitsindizes für jede räumliche Spalte in einer Tabelle erstellen. Es kann sich als nützlich erweisen, mehrere Räumlichkeitsindizes für bestimmte räumliche Spalten zu erstellen, z. B. zum Indizieren verschiedener Mosaikparameter in einer Spalte.

Wichtiger HinweisWichtig

Die Erstellung von räumlichen Indizes unterliegt einigen weiteren Einschränkungen. Weitere Informationen finden Sie unter Einschränkungen für Räumlichkeitsindizes.

Bei der Indexerstellung kann eine verfügbare Prozessparallelität nicht genutzt werden.

Von räumlichen Indizes unterstützte Methoden

Unter bestimmten Bedingungen unterstützen Räumlichkeitsindizes eine Reihe von mengenorientierten Geometriemethoden. Weitere Informationen finden Sie unter Von räumlichen Indizes unterstützte geometry-Methoden.

Räumliche Indizes und Partitionierung

Standardmäßig wird beim Erstellen eines räumlichen Index für eine partitionierte Tabelle der Index in Übereinstimmung mit dem Partitionsschema der Tabelle partitioniert. So kann sichergestellt werden, dass Indexdaten und die zugehörige Zeile in der gleichen Partition gespeichert werden.

In diesem Fall müssen Sie, um das Partitionsschema der Basistabelle zu ändern, den räumlichen Index löschen, bevor Sie die Basistabelle neu partitionieren können. Diese Einschränkung kann umgangen werden, indem Sie beim Erstellen eines räumlichen Index die "ON filegroup"-Option angeben. Weitere Informationen finden Sie nachfolgend unter "Räumlichkeitsindizes und Dateigruppen".

Räumliche Indizes und Dateigruppen

Standardmäßig werden Räumlichkeitsindizes in die gleichen Dateigruppen wie die Tabelle partitioniert, für die der Index angegeben wird. Dies kann durch Angabe der Dateigruppe außer Kraft gesetzt werden:

[ ON { filegroup_name | "default" } ]

Wenn Sie eine Dateigruppe für einen räumlichen Index angeben, wird der Index unabhängig vom Partitionierungsschema der Tabelle in dieser Dateigruppe platziert.

Katalogsichten für Räumlichkeitsindizes

Die folgenden Katalogsichten sind für Räumlichkeitsindizes spezifisch:

Weitere Informationen zur Metadatenstruktur von räumlichen Indizes finden Sie unter Interne Tabellen.

Zusätzliche Hinweise zum Erstellen von Indizes

Weitere Informationen zum Erstellen von Indizes finden Sie in den Hinweisen unter CREATE INDEX (Transact-SQL).

Berechtigungen

Erfordert die ALTER-Berechtigung für die Tabelle oder Sicht. Der Benutzer muss ein Mitglied der festen Serverrolle "sysadmin" bzw. der festen Datenbankrollen "db_ddladmin" und "db_owner" sein.

Beispiele

A. Erstellen eines räumlichen Index für eine geometry-Spalte

Im folgenden Beispiel wird eine Tabelle namens SpatialTable erstellt, die eine Spalte vom Typ geometry enthält, nämlich geometry_col. Dann wird ein Räumlichkeitsindex, SIndx_SpatialTable_geometry_col1, für geometry_col erstellt. Im Beispiel wird das Standardmosaikschema verwendet und das umgebende Feld angegeben.

CREATE TABLE SpatialTable(id int primary key, geometry_col geometry);
CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col1 
   ON SpatialTable(geometry_col)
   WITH ( BOUNDING_BOX = ( 0, 0, 500, 200 ) );

B. Erstellen eines räumlichen Index für eine geometry-Spalte

Im folgenden Beispiel wird ein zweiter Räumlichkeitsindex, SIndx_SpatialTable_geometry_col2, für geometry_col in der Tabelle SpatialTable erstellt. Im Beispiel wird GEOMETRY_GRID als Mosaikschema angegeben. Im Beispiel werden auch das umgebende Feld, unterschiedliche Dichten auf verschiedenen Ebenen und 64 Zellen pro Objekt angegeben. Zudem wird der Indexabstand auf ON festgelegt.

CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col2
   ON SpatialTable(geometry_col)
   USING GEOMETRY_GRID
   WITH (
    BOUNDING_BOX = ( xmin=0, ymin=0, xmax=500, ymax=200 ),
    GRIDS = (LOW, LOW, MEDIUM, HIGH),
    CELLS_PER_OBJECT = 64,
    PAD_INDEX  = ON );

C. Erstellen eines räumlichen Index für eine geometry-Spalte

Im folgenden Beispiel wird ein dritter Räumlichkeitsindex, SIndx_SpatialTable_geometry_col3, für geometry_col in der Tabelle SpatialTable erstellt. Im Beispiel wird das Standardmosaikschema verwendet. Im Beispiel wird das umgebende Feld angegeben, und es werden unterschiedliche Zelldichten auf der dritten und vierten Ebene, jedoch die standardmäßige Anzahl von Zellen pro Objekt verwendet.

CREATE SPATIAL INDEX SIndx_SpatialTable_geometry_col3
   ON SpatialTable(geometry_col)
   WITH (
    BOUNDING_BOX = ( 0, 0, 500, 200 ),
    GRIDS = ( LEVEL_4 = HIGH, LEVEL_3 = MEDIUM ) );

D. Ändern einer für Räumlichkeitsindizes spezifischen Option

Im folgenden Beispiel wird der räumliche Index neu erstellt, der im vorherigen Beispiel erstellt wurde, nämlich SIndx_SpatialTable_geography_col3. Zu diesem Zweck wird eine neue Dichte für LEVEL_3 mit DROP_EXISTING = ON angegeben.

CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col3
   ON SpatialTable(geography_col)
   WITH ( BOUNDING_BOX = ( 0, 0, 500, 200 ),
        GRIDS = ( LEVEL_3 = LOW ),
        DROP_EXISTING = ON );

E. Erstellen eines räumlichen Index für eine geography-Spalte

Im folgenden Beispiel wird eine Tabelle namens SpatialTable2 erstellt, die eine Spalte vom Typ geography aufweist, nämlich geography_col. Dann wird ein Räumlichkeitsindex, SIndx_SpatialTable_geography_col1, für geography_col erstellt. Im Beispiel werden die Standardparameterwerte des Mosaikschemas GEOGRAPHY_GRID verwendet.

CREATE TABLE SpatialTable2(id int primary key, object GEOGRAPHY);
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col1 
   ON SpatialTable2(object);
HinweisHinweis

Für Geografierasterindizes kann kein umgebendes Feld angegeben werden.

F. Erstellen eines räumlichen Index für eine geography-Spalte

Im folgenden Beispiel wird ein zweiter Räumlichkeitsindex, SIndx_SpatialTable_geography_col2, für geography_col in der Tabelle SpatialTable2 erstellt. Im Beispiel wird GEOGRAPHY_GRID als Mosaikschema angegeben. Im Beispiel werden auch unterschiedliche Rasterdichten auf verschiedenen Ebenen und 64 Zellen pro Objekt angegeben. Zudem wird der Indexabstand auf ON festgelegt.

CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col2
   ON SpatialTable2(object)
   USING GEOGRAPHY_GRID
   WITH (
    GRIDS = (MEDIUM, LOW, MEDIUM, HIGH ),
    CELLS_PER_OBJECT = 64,
    PAD_INDEX  = ON );

G. Erstellen eines räumlichen Index für eine geography-Spalte

Im folgenden Beispiel wird dann ein dritter Räumlichkeitsindex, SIndx_SpatialTable_geography_col3, für geography_col in der Tabelle SpatialTable2 erstellt. Im Beispiel werden das Standardmosaikschema GEOGRAPHY_GRID und der Standardwert für CELLS_PER_OBJECT (16) verwendet.

CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col3
   ON SpatialTable2(object)
   WITH ( GRIDS = ( LEVEL_3 = HIGH, LEVEL_2 = HIGH ) );