CREATE SPATIAL INDEX (Transact-SQL)
Crea un indice spaziale in una tabella e in una colonna specificate. L'indice può essere creato prima dell'immissione dei dati nella tabella. È possibile creare indici per tabelle o viste di un altro database specificando un nome di database completo. Per gli indici spaziali è richiesto che nella tabella sia inclusa una chiave primaria cluster.
[!NOTA]
Per informazioni sugli indici spaziali, vedere Panoramica degli indici spaziali.
Convenzioni della sintassi Transact-SQL
Sintassi
Create Spatial Index
CREATE SPATIAL INDEX index_name
ON <object> ( spatial_column_name )
{
<geometry_tessellation> | <geography_tessellation>
}
[ ON { filegroup_name | "default" } ]
;
<object> ::=
[ database_name. [ schema_name ] . | schema_name. ]
table_name
<geometry_tessellation> ::=
{
<geometry_automatic_grid_tessellation> | <geometry_manual_grid_tessellation>
}
<geometry_automatic_grid_tessellation> ::=
{
[ USING GEOMETRY_AUTO_GRID ]
WITH (
<bounding_box>
[ [,] <tessellation_cells_per_object> [ ,…n] ]
[ [,] <spatial_index_option> [ ,…n] ]
)
}
<geometry_manual_grid_tessellation> ::=
{
[ USING GEOMETRY_GRID ]
WITH (
<bounding_box>
[ [,]<tessellation_grid> [ ,…n] ]
[ [,]<tessellation_cells_per_object> [ ,…n] ]
[ [,]<spatial_index_option> [ ,…n] ]
)
}
<geography_tessellation> ::=
{
<geography_automatic_grid_tessellation> | <geography_manual_grid_tessellation>
}
<geography_automatic_grid_tessellation> ::=
{
[ USING GEOGRAPHY_AUTO_GRID ]
[ WITH (
[ [,] <tessellation_cells_per_object> [ ,…n] ]
[ [,] <spatial_index_option> ]
) ]
}
<geography_manual_grid_tessellation> ::=
{
[ USING GEOGRAPHY_GRID ]
[ WITH (
[ <tessellation_grid> [ ,…n] ]
[ [,] <tessellation_cells_per_object> [ ,…n] ]
[ [,] <spatial_index_option> [ ,…n] ]
) ]
}
<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_grid> ::=
{
GRIDS = ( { <grid_level> [ ,...n ] | <grid_size>, <grid_size>, <grid_size>, <grid_size> }
)
}
<tesseallation_cells_per_object> ::=
{
CELLS_PER_OBJECT = n
}
<grid_level> ::=
{
LEVEL_1 = <grid_size>
| LEVEL_2 = <grid_size>
| LEVEL_3 = <grid_size>
| LEVEL_4 = <grid_size>
}
<grid_size> ::= { LOW | MEDIUM | HIGH }
<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
| DATA_COMPRESSION = { NONE | ROW | PAGE }
}
Argomenti
index_name
Nome dell'indice. I nomi degli indici devono essere univoci all'interno di una tabella, ma non all'interno di un database. Devono inoltre essere conformi alle regole degli identificatori.ON <object> ( spatial_column_name )
Specifica l'oggetto, ovvero database, schema o tabella, in cui deve essere creato l'indice e il nome di una colonna spaziale.spatial_column_name specifica la colonna spaziale su cui è basato l'indice. È possibile specificare una sola colonna spaziale in una singola definizione di indice spaziale. È invece possibile creare più indici spaziali in una colonna geometry o geography.
USING
Indica lo schema a mosaico dell'indice spaziale. Questo parametro utilizza il valore specifico del tipo, mostrato nella tabella seguente:Tipo di dati della colonna
Schema a mosaico
geometry
GEOMETRY_GRID
geometry
GEOMETRY_AUTO_GRID
geography
GEOGRAPY_GRID
geography
GEOGRAPHY_AUTO_GRID
È possibile creare un indice spaziale solo in una colonna di tipo geometry o geography. In caso contrario, viene generato un errore. Viene generato un errore anche quando viene passato un parametro non valido per un determinato tipo.
[!NOTA]
Per informazioni sull'implementazione dello schema a mosaico in SQL Server, vedere Panoramica degli indici spaziali.
ON filegroup_name
Crea l'indice specificato nel filegroup specificato. Se non viene specificato alcun percorso e la tabella non è partizionata, l'indice utilizza lo stesso filegroup della tabella sottostante. È necessario che il filegroup esista già.ON "default"
Crea l'indice specificato nel filegroup predefinito.In questo contesto il termine default non rappresenta una parola chiave, ma un identificatore per il filegroup predefinito e pertanto deve essere delimitato, ad esempio ON "default" oppure ON [default]. Se si specifica "default", l'opzione QUOTED_IDENTIFIER deve essere impostata su ON per la sessione corrente. Impostazione predefinita. Per ulteriori informazioni, vedere SET QUOTED_IDENTIFIER (Transact-SQL).
<object>::=
Oggetto con nome completo o non completo da indicizzare.
database_name
Nome del database.schema_name
Nome dello schema a cui appartiene la tabella.table_name
Nome della tabella da indicizzare.
Opzioni USING
GEOMETRY_GRID
Specifica lo schema a mosaico per la griglia geometry in uso. È possibile specificare GEOMETRY_GRID solo in una colonna con tipo di dati geometry. GEOMETRY_GRID consente la regolazione manuale dello schema a mosaico.GEOMETRY_AUTO_GRID
Può essere specificata solo in una colonna con tipo di dati geometry. Si tratta dell'impostazione predefinita per questo tipo di dati e non è necessario specificarla.GEOGRAPHY_GRID
Specifica lo schema a mosaico per la griglia geografica. È possibile specificare GEOGRAPHY_GRID solo in una colonna con tipo di dati geography.GEOGRAPHY_AUTO_GRID
Può essere specificata solo in una colonna con tipo di dati geography. Si tratta dell'impostazione predefinita per questo tipo di dati e non è necessario specificarla.
Opzioni WITH
BOUNDING_BOX
Specifica una tupla numerica di quattro elementi che definisce le quattro coordinate del rettangolo di selezione: le coordinate x-min e y-min dell'angolo inferiore sinistro e le coordinate x-max e y-max dell'angolo superiore destro.xmin
Specifica la coordinata x dell'angolo inferiore sinistro del rettangolo di selezione.ymin
Specifica la coordinata y dell'angolo inferiore sinistro del rettangolo di selezione.xmax
Specifica la coordinata x dell'angolo superiore destro del rettangolo di selezione.ymax
Specifica la coordinata y dell'angolo superiore destro del rettangolo di selezione.XMIN = xmin
Specifica il nome della proprietà e il valore della coordinata x dell'angolo inferiore sinistro del rettangolo di selezione.YMIN =ymin
Specifica il nome della proprietà e il valore della coordinata y dell'angolo inferiore sinistro del rettangolo di selezione.XMAX =xmax
Specifica il nome della proprietà e il valore della coordinata x dell'angolo superiore destro del rettangolo di selezione.YMAX =ymax
Specifica il nome della proprietà e il valore della coordinata y dell'angolo superiore destro del rettangolo di selezione.
Le coordinate dei rettangoli di selezione si applicano solo all'interno di una clausola USING GEOMETRY_GRID.
xmax deve essere maggiore di xmin e ymax deve essere maggiore di ymin. È possibile specificare qualsiasi rappresentazione di valore float valida, presupponendo che: xmax >xmin e ymax>ymin. In caso contrario, vengono generati errori.
Non sono previsti valori predefiniti.
Per i nomi delle proprietà dei rettangoli di selezione non viene fatta distinzione tra maiuscole e minuscole, indipendentemente dalle regole di confronto del database.
Per specificare i nomi delle proprietà, è necessario specificare ogni nome una sola volta. I nomi possono essere specificati in qualsiasi ordine. Le clausole seguenti sono ad esempio equivalenti:
BOUNDING_BOX = ( XMIN = xmin, YMIN = ymin, XMAX = xmax, YMAX = ymax )
BOUNDING_BOX = ( XMIN = xmin, XMAX = xmax, YMIN = ymin, YMAX = ymax )
GRIDS
Definisce la densità della griglia a ogni livello di uno schema a mosaico. Se GEOMETRY_AUTO_GRID e GEOGRAPHY_AUTO_GRID sono selezionate, questa opzione è disabilitata.[!NOTA]
Per informazioni sullo schema a mosaico, vedere Panoramica degli indici spaziali.
I parametri di GRID sono i seguenti:
LEVEL_1
Specifica la griglia di primo livello (principale).LEVEL_2
Specifica la griglia di secondo livello.LEVEL_3
Specifica la griglia di terzo livello.LEVEL_4
Specifica la griglia di quarto livello.LOW
Specifica la più bassa densità possibile per la griglia a un determinato livello. LOW equivale a 16 celle (griglia 4x4).MEDIUM
Specifica la densità media per la griglia a un determinato livello. MEDIUM equivale a 64 celle (una griglia 8x8).HIGH
Specifica la più alta densità possibile per la griglia a un determinato livello. HIGH equivale a 256 celle (griglia 16x16).
L'utilizzo di nomi per i livelli consente di specificare i livelli in qualsiasi ordine e di ometterne alcuni. Se si utilizza il nome per un livello, è necessario utilizzarlo anche per qualsiasi altro livello specificato. Se si omette un livello, per la densità viene utilizzato il valore predefinito MEDIUM.
Se si specifica una densità non valida, viene generato un errore.
CELLS_PER_OBJECT =n
Viene specificato il numero di celle dello schema a mosaico utilizzabile per un singolo oggetto spaziale nell'indice dal processo dello schema a mosaico. n può essere qualsiasi numero intero compreso tra 1 e 8192 inclusi. Se viene passato un numero non valido o il numero è maggiore del numero massimo di celle per lo schema a mosaico specificato, viene generato un errore.CELLS_PER_OBJECT dispone dei valori predefiniti seguenti:
Opzione USING
Celle predefinite per oggetto
GEOMETRY_GRID
16
GEOMETRY_AUTO_GRID
8
GEOGRAPHY_GRID
16
GEOGRAPHY_AUTO_GRID
12
Se al livello principale un oggetto include più celle rispetto a quanto specificato da n, l'indicizzazione utilizza il numero di celle necessario per fornire uno schema a mosaico di livello principale completo. In tali casi un oggetto può ricevere un numero di celle maggiore di quello specificato: In questo caso, il numero massimo è il numero di celle generate dalla griglia di livello principale, che dipende dalla densità.
Il valore CELLS_PER_OBJECT viene utilizzato dalla regola dello schema a mosaico di celle per oggetto. Per informazioni sulle regole dello schema a mosaico, vedere Panoramica degli indici spaziali.
PAD_INDEX = { ON | OFF }
Specifica il riempimento dell'indice. Il valore predefinito è OFF.ON
Indica che la percentuale di spazio disponibile specificata in fillfactor viene applicata alle pagine di livello intermedio dell'indice.OFF o fillfactor non specificato
Indica che le pagine di livello intermedio vengono riempite poco al di sotto della capacità massima, in modo che lo spazio residuo sia sufficiente per almeno una riga della dimensione massima supportata dall'indice, in base al set di chiavi nelle pagine intermedie.
L'opzione PAD_INDEX risulta utile solo quando si specifica FILLFACTOR, in quanto PAD_INDEX utilizza la percentuale specificata in FILLFACTOR. Se la percentuale specificata in FILLFACTOR non consente l'inserimento di una riga, Motore di database sostituisce internamente tale percentuale in modo da rendere disponibile lo spazio minimo necessario. Il numero di righe di una pagina intermedia dell'indice non è mai minore di due, indipendentemente dal valore di fillfactor.
FILLFACTOR =fillfactor
Specifica una percentuale indicante il livello di riempimento del livello foglia di ogni pagina di indice applicato da Motore di database durante la creazione o la ricompilazione. fillfactor deve essere un valore intero compreso tra 1 e 100. Il valore predefinito è 0. Se fillfactor è 100 o 0, tramite Motore di database vengono creati indici con pagine foglia riempite fino alla capacità massima.[!NOTA]
I valori 0 e 100 relativi al fattore di riempimento sono equivalenti.
L'impostazione di FILLFACTOR viene applicata solo in fase di creazione o di ricompilazione dell'indice. La percentuale specificata di spazio vuoto delle pagine non viene mantenuta in modo dinamico da Motore di database. Per visualizzare l'impostazione del fattore di riempimento, utilizzare la vista del catalogo sys.indexes.
Importante La creazione di un indice cluster con un valore FILLFACTOR minore di 100 influisce sulla quantità di spazio di archiviazione occupata dai dati perché i dati vengono ridistribuiti da Motore di database durante la creazione dell'indice cluster.
Per ulteriori informazioni, vedere Specificare un fattore di riempimento per un indice.
SORT_IN_TEMPDB = { ON | OFF }
Specifica se archiviare o meno i risultati di ordinamento temporanei in tempdb. Il valore predefinito è OFF.ON
I risultati di ordinamento intermedi utilizzati per la compilazione dell'indice vengono archiviati in tempdb. Se tempdb si trova in un set di dischi diverso rispetto al database utente, il tempo necessario per creare un indice potrebbe essere minore. La quantità di spazio su disco utilizzata durante la compilazione dell'indice sarà tuttavia maggiore.OFF
I risultati intermedi dell'ordinamento vengono archiviati nello stesso database dell'indice.
Oltre allo spazio necessario nel database utente per la creazione dell'indice, in tempdb deve essere disponibile una quantità di spazio aggiuntivo pressoché equivalente per l'archiviazione dei risultati di ordinamento intermedi. Per ulteriori informazioni, vedere Opzione SORT_IN_TEMPDB per gli indici.
IGNORE_DUP_KEY =OFF
Non ha effetto per gli indici spaziali perché il tipo di indice non è mai univoco. Non impostare questa opzione su ON. In caso contrario, viene generato un errore.STATISTICS_NORECOMPUTE = { ON | OFF}
Specifica se le statistiche di distribuzione vengono ricalcolate. Il valore predefinito è OFF.ON
Le statistiche non aggiornate non vengono ricalcolate automaticamente.OFF
Abilita l'aggiornamento automatico delle statistiche.
Per ripristinare l'aggiornamento automatico delle statistiche, impostare l'opzione STATISTICS_NORECOMPUTE su OFF oppure eseguire UPDATE STATISTICS senza la clausola NORECOMPUTE.
Importante La disabilitazione del ricalcolo automatico delle statistiche di distribuzione può compromettere la selezione di piani di esecuzione ottimali per le query riguardanti la tabella in Query Optimizer.
DROP_EXISTING = { ON | OFF }
Specifica che è necessario eliminare e quindi ricompilare l'indice spaziale denominato preesistente. Il valore predefinito è OFF.ON
L'indice esistente deve essere eliminato e ricompilato. Il nome di indice specificato deve corrispondere a quello dell'indice esistente, mentre la definizione dell'indice può essere modificata. È possibile, ad esempio, specificare valori diversi per le colonne, il tipo di ordinamento, lo schema di partizione o le opzioni dell'indice.OFF
Se il nome di indice specificato esiste già, viene visualizzato un messaggio di errore.
Il tipo di indice non può essere modificato tramite l'opzione DROP_EXISTING.
ONLINE =OFF
Specifica che le tabelle sottostanti e gli indici associati non sono disponibili per le query e la modifica dei dati durante l'operazione sull'indice. In questa versione di SQL Server le operazioni di compilazione di indici online non sono supportate per gli indici spaziali. Se questa opzione è impostata su ON per un indice spaziale, viene generato un errore. Omettere l'opzione ONLINE o impostare ONLINE su OFF.Un'operazione offline sull'indice che crea, ricompila o elimina un indice spaziale acquisisce un blocco di modifica dello schema (SCH-M) per la tabella. Il blocco impedisce agli utenti di accedere alla tabella sottostante per la durata dell'operazione.
[!NOTA]
Le operazioni sugli indici online non sono disponibili in tutte le edizioni di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2012.
ALLOW_ROW_LOCKS = { ON | OFF }
Specifica se sono consentiti blocchi di riga. Il valore predefinito è ON.ON
I blocchi di riga sono consentiti durante l'accesso all'indice. Motore di database determina quando utilizzare blocchi di riga.OFF
I blocchi di riga non vengono utilizzati.
ALLOW_PAGE_LOCKS = { ON | OFF }
Specifica se sono consentiti blocchi a livello di pagina. Il valore predefinito è ON.ON
I blocchi a livello di pagina sono consentiti durante l'accesso all'indice. Il Motore di database determina quando utilizzare blocchi a livello di pagina.OFF
I blocchi a livello di pagina non vengono utilizzati.
MAXDOP =max_degree_of_parallelism
Consente di ignorare l'opzione di configurazione max degree of parallelism per la durata dell'operazione sull'indice. Utilizzare MAXDOP per limitare il numero di processori utilizzati durante l'esecuzione di un piano parallelo. Il valore massimo è 64 processori.Importante Sebbene l'opzione MAXDOP sia supportata a livello di sintassi, CREATE SPATIAL INDEX attualmente utilizza sempre solo un processore singolo.
I possibili valori di max_degree_of_parallelism sono i seguenti:
1
Disattiva la generazione di piani paralleli.>1
Consente di limitare al valore specificato, o a un valore più basso in base al carico di lavoro corrente del sistema, il numero massimo di processori utilizzati in un'operazione parallela sugli indici.0 (predefinito)
Utilizza il numero effettivo di processori o un numero inferiore in base al carico di lavoro corrente del sistema.
Per ulteriori informazioni, vedere Configurazione di operazioni parallele sugli indici.
[!NOTA]
Le operazioni parallele sugli indici sono disponibili solo in alcune edizioni di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2012.
DATA_COMPRESSION = {NONE | ROW | PAGE}
Determina il livello di compressione dati utilizzata dall'indice.NONE
Nessuna compressione utilizzata sui dati dall'indiceROW
Compressione di riga utilizzata sui dati dall'indicePAGE
Compressione di pagina utilizzata sui dati dall'indice
Osservazioni
Per un'introduzione all'indicizzazione spaziale in SQL Server, vedere Panoramica degli indici spaziali.
Ogni opzione può essere specificata una sola volta per ogni istruzione CREATE SPATIAL INDEX. Se un'opzione viene specificata due volte, viene generato un errore.
È possibile creare fino a 249 indici spaziali in ogni colonna spaziale di una tabella. La creazione di più di un indice spaziale in una specifica colonna spaziale può essere utile, ad esempio, per indicizzare parametri di schema a mosaico diversi in un'unica colonna.
Importante |
---|
La creazione di indici spaziali è soggetta anche ad altre limitazioni. Per ulteriori informazioni, vedere Panoramica degli indici spaziali. |
Per la compilazione di un indice non è possibile utilizzare il parallelismo di processi disponibile.
Metodi supportati negli indici spaziali
In determinate condizioni, gli indici spaziali supportano diversi metodi geometrici orientati ai set. Per ulteriori informazioni, vedere Panoramica degli indici spaziali.
Indici spaziali e partizionamento
Per impostazione predefinita, se un indice spaziale viene creato in una tabella partizionata, l'indice viene partizionato in base allo schema di partizione della tabella. In questo modo, i dati dell'indice e la riga correlata vengono archiviati nella stessa partizione.
In questo caso, per modificare lo schema di partizione della tabella di base, sarebbe necessario eliminare l'indice spaziale prima di ripartizionare la tabella di base. Per evitare questa limitazione, quando si crea un indice spaziale è possibile specificare l'opzione "ON filegroup". Per ulteriori informazioni, vedere "Indici spaziali e filegroup", più avanti in questo argomento.
Indici spaziali e filegroup
Per impostazione predefinita, gli indici spaziali vengono partizionati negli stessi filegroup della tabella in cui l'indice viene specificato. Questo comportamento può essere modificato utilizzando la specifica del filegroup:
[ ON { filegroup_name | "default" } ]
Se si specifica un filegroup per un indice spaziale, l'indice viene inserito in tale filegroup, indipendentemente dallo schema di partizione della tabella.
Viste del catalogo per gli indici spaziali
Le viste del catalogo seguenti sono specifiche degli indici spaziali:
sys.spatial_indexes
Rappresenta le principali informazioni per gli indici spaziali.sys.spatial_index_tessellations
Rappresenta le informazioni sullo schema a mosaico e i parametri di ognuno degli indici spaziali.
Osservazioni aggiuntive sulla creazione degli indici
Per ulteriori informazioni sulla creazione degli indici, vedere la sezione "Osservazioni" in CREATE INDEX (Transact-SQL).
Autorizzazioni
L'utente deve disporre dell'autorizzazione ALTER sulla tabella o vista oppure essere membro del ruolo predefinito del server sysadmin o dei ruoli predefiniti del database db_ddladmin e db_owner.
Esempi
A.Creazione di un indice spaziale in una colonna geometrica
Nell'esempio seguente viene creata una tabella denominata SpatialTable contenente una colonna del tipo geometry_col, geometry. Viene quindi creato un indice spaziale, SIndx_SpatialTable_geometry_col1, in geometry_col. Nell'esempio viene utilizzato lo schema a mosaico predefinito e viene specificato il rettangolo di selezione.
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.Creazione di un indice spaziale in una colonna geometrica
Nell'esempio seguente viene creato un secondo indice spaziale, SIndx_SpatialTable_geometry_col2, nella colonna geometry_col della tabella SpatialTable. Nell'esempio viene specificato GEOMETRY_GRID come schema a mosaico. Vengono inoltre specificati il rettangolo di selezione, densità diverse su livelli diversi della griglia e 64 celle per oggetto. Nell'esempio viene inoltre impostato il riempimento dell'indice su ON.
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.Creazione di un indice spaziale in una colonna geometrica
Nell'esempio seguente viene creato un terzo indice spaziale, SIndx_SpatialTable_geometry_col3, nella colonna geometry_col della tabella SpatialTable. Nell'esempio viene utilizzato lo schema a mosaico predefinito. Viene specificato il rettangolo di selezione e vengono utilizzate densità di celle diverse per il terzo e il quarto livello, mentre viene utilizzato il numero predefinito di celle per oggetto.
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.Modifica di un'opzione specifica degli indici spaziali
Nell'esempio seguente viene ricompilato l'indice spaziale creato nell'esempio precedente, SIndx_SpatialTable_geography_col3, specificando una nuova densità per LEVEL_3 con DROP_EXISTING = ON.
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.Creazione di un indice spaziale in una colonna geografica
Nell'esempio seguente viene creata una tabella denominata SpatialTable2 contenente una colonna del tipo geography geography_col. Viene quindi creato un indice spaziale, SIndx_SpatialTable_geography_col1, in geography_col e vengono utilizzati i valori dei parametri predefiniti dello schema a mosaico GEOGRAPHY_AUTO_GRID.
CREATE TABLE SpatialTable2(id int primary key, object GEOGRAPHY);
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col1
ON SpatialTable2(object);
[!NOTA]
Per gli indici delle griglie geografiche non è possibile specificare un rettangolo di selezione.
F.Creazione di un indice spaziale in una colonna geografica
Nell'esempio seguente viene creato un secondo indice spaziale, SIndx_SpatialTable_geography_col2, nella colonna geography_col della tabella SpatialTable2. Nell'esempio viene specificato GEOGRAPHY_GRID come schema a mosaico. Vengono inoltre specificate densità della griglia diverse su livelli diversi e 64 celle per oggetto. Nell'esempio viene inoltre impostato il riempimento dell'indice su ON.
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.Creazione di un indice spaziale in una colonna geografica
Nell'esempio seguente viene creato un terzo indice spaziale, SIndx_SpatialTable_geography_col3, nella colonna geography_col della tabella SpatialTable2. Nell'esempio vengono utilizzati lo schema a mosaico predefinito, GEOGRAPHY_GRID, e il valore di CELLS_PER_OBJECT predefinito (16).
CREATE SPATIAL INDEX SIndx_SpatialTable_geography_col3
ON SpatialTable2(object)
WITH ( GRIDS = ( LEVEL_3 = HIGH, LEVEL_2 = HIGH ) );
Vedere anche
Riferimento
CREATE PARTITION FUNCTION (Transact-SQL)
CREATE PARTITION SCHEME (Transact-SQL)
CREATE STATISTICS (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.spatial_index_tessellations (Transact-SQL)
sys.spatial_indexes (Transact-SQL)