CREATE SPATIAL INDEX (Transact-SQL)CREATE SPATIAL INDEX (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database noAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Crea un índice espacial en la tabla y la columna especificadas en SQL ServerSQL Server.Creates a spatial index on a specified table and column in SQL ServerSQL Server. Se puede crear un índice antes de que la tabla posea datos.An index can be created before there is data in the table. Los índices se pueden crear en tablas o vistas de otra base de datos especificando un nombre completo de base de datos.Indexes can be created on tables or views in another database by specifying a qualified database name. Los índices espaciales requieren que la tabla tenga una clave principal clúster.Spatial indexes require the table to have a clustered primary key. Para más información sobre los índices espaciales, vea Información general sobre los índices espaciales.For information about spatial indexes, see Spatial Indexes Overview.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

CREATE SPATIAL INDEX index_name
  ON <object> ( spatial_column_name )  
    {  
       <geometry_tessellation> | <geography_tessellation>  
    }
  [ ON { filegroup_name | "default" } ]  
[;]
  
<object> ::=  
    { database_name.schema_name.table_name | schema_name.table_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 }  
  
<tessellation_grid> ::=  
{
    GRIDS = ( { <grid_level> [ ,...n ] | <grid_size>, <grid_size>, <grid_size>, <grid_size>  }
        )  
}  
<tessellation_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 }  
}  

ArgumentosArguments

index_name index_name
Es el nombre del índice.Is the name of the index. Los nombres de índice deben ser únicos en una tabla, pero no es necesario que sean únicos en una base de datos.Index names must be unique within a table but do not have to be unique within a database. Los nombres de índice deben seguir las reglas de los identificadores.Index names must follow the rules of identifiers.

ON <object> ( spatial_column_name )ON <object> ( spatial_column_name )
Especifica el objeto (base de datos, esquema o tabla) en el que va a crearse el índice y el nombre de columna espacial.Specifies the object (database, schema, or table) on which the index is to be created and the name of spatial column.

spatial_column_name especifica la columna espacial en la que se basa el índice.spatial_column_name specifies the spatial column on which the index is based. Solamente puede especificarse una columna espacial en una definición de índice espacial único; pero pueden crearse varios índices espaciales en una columna de tipo geometry o geography.Only one spatial column can be specified in a single spatial index definition; however, multiple spatial indexes can be created on a geometry or geography column.

USINGUSING
Indica el esquema de teselación del índice espacial.Indicates the tessellation scheme for the spatial index. Este parámetro usa el valor específico del tipo, tal y como aparece en la siguiente tabla:This parameter uses the type-specific value, shown in the following table:

Tipo de datos de la columnaData type of column Esquema de teselaciónTessellation scheme
geometrygeometry GEOMETRY_GRIDGEOMETRY_GRID
geometrygeometry GEOMETRY_AUTO_GRIDGEOMETRY_AUTO_GRID
geographygeography GEOGRAPHY_GRIDGEOGRAPHY_GRID
geographygeography GEOGRAPHY_AUTO_GRIDGEOGRAPHY_AUTO_GRID

Un índice espacial solamente puede crearse en una columna de tipo geometría o geografía, en caso contrario se produce un error.A spatial index can be created only on a column of type geometry or geography, otherwise an error is raised. Se produce un error si se pasa un parámetro no válido para un tipo determinado.If an invalid parameter for a given type is passed, an error is raised.

Para conocer mejor el modo en que SQL ServerSQL Server implementa la teselación, vea Información general sobre los índices espaciales.For information about how SQL ServerSQL Server implements tessellation, see Spatial Indexes Overview.

ON filegroup_name ON filegroup_name
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Crea el índice especificado en el grupo de archivos especificado.Creates the specified index on the specified filegroup. Si no se especifica ninguna ubicación y la tabla no tiene particiones, el índice utiliza el mismo grupo de archivos que la tabla subyacente.If no location is specified and the table is not partitioned, the index uses the same filegroup as the underlying table. El grupo de archivos debe existir previamente.The filegroup must already exist.

ON "default"ON "default"
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Crea el índice especificado en el grupo de archivos predeterminado.Creates the specified index on the default filegroup.

El término predeterminado (default), en este contexto, no es una palabra clave.The term default, in this context, is not a keyword. Es un identificador para el grupo de archivos predeterminado y debe delimitarse, como en ON"default" o en ON [default].It is an identifier for the default filegroup and must be delimited, as in ON "default" or ON [default]. Si se especifica "default", la opción QUOTED_IDENTIFIER debe tener el valor ON para la sesión actual.If "default" is specified, the QUOTED_IDENTIFIER option must be ON for the current session. Esta es la configuración predeterminada.This is the default setting. Para obtener más información, vea SET QUOTED_IDENTIFIER (Transact-SQL).For more information, see SET QUOTED_IDENTIFIER (Transact-SQL).

<object>::= <object>::=
Es el objeto completo o no completo que va a indizarse.Is the fully qualified or non-fully qualified object to be indexed.

database_name database_name
Es el nombre de la base de datos.Is the name of the database.

schema_name schema_name
Es el nombre del esquema al que pertenece la tabla.Is the name of the schema to which the table belongs.

table_name table_name
Es el nombre de la tabla que va a indizarse.Is the name of the table to be indexed.

Base de datos SQL de AzureAzure SQL Database admite el formato de nombre de tres partes database_name.[schema_name].object_name cuando database_name es la base de datos actual o database_name es tempdb y object_name comienza por #.supports the three-part name format database_name.[schema_name].object_name when the database_name is the current database or the database_name is tempdb and the object_name starts with #.

Opciones de USINGUSING options

GEOMETRY_GRIDGEOMETRY_GRID
Especifica el esquema de teselación de cuadrícula de geometry que se está usando.Specifies the geometry grid tessellation scheme that you are using. GEOMETRY_GRID puede especificarse solamente en una columna del tipo de datos geometry.GEOMETRY_GRID can be specified only on a column of the geometry data type. GEOMETRY_GRID permite que se ajuste manualmente el esquema de teselación.GEOMETRY_GRID allows for manual adjusting of the tessellation scheme.

GEOMETRY_AUTO_GRIDGEOMETRY_AUTO_GRID
Se aplica a: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later) and Base de datos SQL de AzureAzure SQL Database

Puede especificarse solamente en una columna del tipo de datos .Can be specified only on a column of the geometry data type. Se trata del valor predeterminado para este tipo de datos y no es necesario especificarlo.This is the default for this data type and does not need to be specified.

GEOGRAPHY_GRIDGEOGRAPHY_GRID
Especifica el esquema de teselación de cuadrícula de geografía.Specifies the geography grid tessellation scheme. GRAPHY_GRID puede especificarse solamente en una columna del tipo de datos geography.GEOGRAPHY_GRID can be specified only on a column of the geography data type.

GEOGRAPHY_AUTO_GRIDGEOGRAPHY_AUTO_GRID
Se aplica a: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later) and Base de datos SQL de AzureAzure SQL Database

Solamente puede especificarse en una columna del tipo de datos Geography.Can be specified only on a column of the geography data type. Se trata del valor predeterminado para este tipo de datos y no es necesario especificarlo.This is the default for this data type and does not need to be specified.

Opciones de WITHWITH options

BOUNDING_BOXBOUNDING_BOX
Especifica una tupla numérica de cuatro elementos que define las cuatro coordenadas del cuadro de límite: las coordenadas X mínima e Y mínima de la esquina inferior izquierda y las coordenadas X máxima e Y máxima de la esquina superior derecha.Specifies a numeric four-tuple that defines the four coordinates of the bounding box: the x-min and y-min coordinates of the lower-left corner, and the x-max and y-max coordinates of the upper-right corner.

xmin xmin
Especifica la coordenada X de la esquina inferior izquierda del cuadro de límite.Specifies the x-coordinate of the lower-left corner of the bounding box.

ymin ymin
Especifica la coordenada Y de la esquina inferior izquierda del cuadro de límite.Specifies the y-coordinate of the lower-left corner of the bounding box.

xmax xmax
Especifica la coordenada X de la esquina superior derecha del cuadro de límite.Specifies the x-coordinate of the upper-right corner of the bounding box.

ymax ymax
Especifica la coordenada Y de la esquina superior derecha del cuadro de límite.Specifies the y-coordinate of the upper-right corner of the bounding box.

XMIN = xmin XMIN = xmin
Especifica el nombre y el valor de la propiedad para la coordenada X de la esquina inferior izquierda del cuadro de límite.Specifies the property name and value for the x-coordinate of the lower-left corner of the bounding box.

YMIN =ymin YMIN =ymin
Especifica el nombre y el valor de la propiedad para la coordenada Y de la esquina inferior izquierda del cuadro de límite.Specifies the property name and value for the y-coordinate of the lower-left corner of the bounding box.

XMAX =xmax XMAX =xmax
Especifica el nombre y el valor de la propiedad para la coordenada X de la esquina superior derecha del cuadro de límite.Specifies the property name and value for the x-coordinate of the upper-right corner of the bounding box.

YMAX =ymax YMAX =ymax
Especifica el nombre y el valor de la propiedad para la coordenada Y de la esquina superior derecha del cuadro de límite.Specifies the property name and value for the y-coordinate of upper-right corner of the bounding box

Nota

Las coordenadas del cuadro de límite solamente se aplican dentro de una cláusula USING GEOMETRY_GRID.Bounding-box coordinates apply only within a USING GEOMETRY_GRID clause.

xmax debe ser mayor que xmin e ymax debe ser mayor que ymin.xmax must be greater than xmin and ymax must be greater than ymin. Puede especificar cualquier representación válida del valor float suponiendo que: xmax > xmin e ymax > ymin.You can specify any valid float value representation, assuming that: xmax > xmin and ymax > ymin. De lo contrario, se producen los errores correspondientes.Otherwise the appropriate errors are raised.

No hay valores predeterminados.There are no default values.

En los nombres de las propiedades del cuadro de límite no se distinguen mayúsculas de minúsculas, independientemente de la intercalación de la base de datos.The bounding-box property names are case-insensitive regardless of the database collation.

Cada nombre de propiedad debe especificarse una sola vez.To specify property names, you must specify each of them once and only once. Pueden especificarse en cualquier orden.You can specify them in any order. Por ejemplo, las cláusulas siguientes son equivalentes:For example, the following clauses are equivalent:

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

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

GRIDSGRIDS
Define la densidad de la cuadrícula en cada nivel del esquema de teselación.Defines the density of the grid at each level of a tessellation scheme. Cuando GEOMETRY_AUTO_GRID y GEOGRAPHY_AUTO_GRID están seleccionados, esta opción está deshabilitada.When GEOMETRY_AUTO_GRID and GEOGRAPHY_AUTO_GRID are selected, this option is disabled.

Para más información sobre la teselación, vea Información general sobre los índices espaciales.For information about tessellation, see Spatial Indexes Overview.

GRIDS admite los parámetros siguientes:The GRIDS parameters are as follows:

LEVEL_1LEVEL_1
Especifica la cuadrícula del primer nivel (superior).Specifies the first-level (top) grid.

LEVEL_2LEVEL_2
Especifica la cuadrícula del segundo nivel.Specifies the second-level grid.

LEVEL_3LEVEL_3
Especifica la cuadrícula del tercer nivel.Specifies the third-level grid.

LEVEL_4LEVEL_4
Especifica la cuadrícula del cuarto nivel.Specifies the fourth-level grid.

LOWLOW
Especifica la mínima densidad posible de la cuadrícula en un nivel determinado.Specifies the lowest possible density for the grid at a given level. LOW equivale a 16 celdas (una cuadrícula de 4x4).LOW equates to 16 cells (a 4x4 grid).

MEDIUM MEDIUM
Especifica la densidad media de la cuadrícula en un nivel determinado.Specifies the medium density for the grid at a given level. MEDIUM equivale a 64 celdas (una cuadrícula de 8x8).MEDIUM equates to 64 cells (an 8x8 grid).

HIGHHIGH
Especifica la máxima densidad posible de la cuadrícula en un nivel determinado.Specifies the highest possible density for the grid at a given level. HIGH equivale a 256 celdas (una cuadrícula de 16x16).HIGH equates to 256 cells (a 16x16 grid).

Nota

El uso de nombres para los niveles permite especificar los niveles en cualquier orden y omitirlos.Using level names allows you to specify the levels in any order and to omit levels. Si utiliza el nombre para un nivel, debe utilizar el nombre para cualquier otro nivel que especifique.If you use the name for any level, you must use the name of any other level that you specify. Si omite un nivel, su densidad adopta el valor predeterminado, MEDIUM.If you omit a level, its density defaults to MEDIUM.

Advertencia

Si se especifica una densidad no válida, se produce un error.If an invalid density is specified, an error is raised.

CELLS_PER_OBJECT =n CELLS_PER_OBJECT =n
Especifica el número de celdas por objeto de teselación que el proceso de teselación puede usar para un único objeto espacial en el índice.Specifies the number of tessellation cells per object that can be used for a single spatial object in the index by the tessellation process. n puede ser cualquier número entero comprendido entre 1 y 8192, ambos incluidos.n can be any integer between 1 and 8192, inclusive. Si se pasa un número que no es válido o si el número supera el máximo de celdas para la teselación especificada, se produce un error.If an invalid number is passed or the number is larger than the maximum number of cells for the specified tessellation, an error is raised.

CELLS_PER_OBJECT tiene los siguientes valores predeterminados:CELLS_PER_OBJECT has the following default values:

Opción USINGUSING option Celdas predeterminadas por objetoDefault Cells per Object
GEOMETRY_GRIDGEOMETRY_GRID 1616
GEOMETRY_AUTO_GRIDGEOMETRY_AUTO_GRID 88
GEOGRAPHY_GRIDGEOGRAPHY_GRID 1616
GEOGRAPHY_AUTO_GRIDGEOGRAPHY_AUTO_GRID 1212

En el nivel superior, si un objeto abarca más celdas de las especificadas mediante n, la indexación usa tantas celdas como sean necesarias para proporcionar una teselación de nivel superior completa.At the top level, if an object covers more cells than specified by n, the indexing uses as many cells as necessary to provide a complete top-level tessellation. En tales casos, un objeto podría recibir más celdas de las especificadas.In such cases, an object might receive more than the specified number of cells. En este caso, el número máximo es la cantidad de celdas generadas por la cuadrícula de nivel superior, que depende de la densidad.In this case, the maximum number is the number of cells generated by the top-level grid, which depends on the density.

La regla de teselación de celdas por objeto utiliza el valor CELLS_PER_OBJECT.The CELLS_PER_OBJECT value is used by the cells-per-object tessellation rule. Para más información sobre las reglas de teselación, vea Información general sobre los índices espaciales.For information about the tessellation rules, see Spatial Indexes Overview.

PAD_INDEX = { ON | OFF }PAD_INDEX = { ON | OFF }
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Especifica el relleno del índice.Specifies index padding. El valor predeterminado es OFF.The default is OFF.

ONON
Indica que el porcentaje de espacio disponible especificado por fillfactor se aplica a las páginas de nivel intermedio del índice.Indicates that the percentage of free space that is specified by fillfactor is applied to the intermediate-level pages of the index.

No se especifica OFF ni fillfactor.OFF or fillfactor is not specified
Indica que las páginas de nivel intermedio se llenan casi al máximo de su capacidad y dejan espacio suficiente para al menos una fila del tamaño máximo que puede tener el índice, considerando el conjunto de claves incluidas en las páginas de nivel intermedio.Indicates that the intermediate-level pages are filled to near capacity, leaving sufficient space for at least one row of the maximum size the index can have, considering the set of keys on the intermediate pages.

La opción PAD_INDEX solamente resulta útil si también se especifica FILLFACTOR, porque PAD_INDEX utiliza el mismo porcentaje especificado por FILLFACTOR.The PAD_INDEX option is useful only when FILLFACTOR is specified, because PAD_INDEX uses the percentage specified by FILLFACTOR. Si el porcentaje especificado para FILLFACTOR no es lo suficientemente grande como para admitir una fila, Motor de base de datosDatabase Engine invalida internamente el porcentaje para permitir el valor mínimo.If the percentage specified for FILLFACTOR is not large enough to allow for one row, the Motor de base de datosDatabase Engine internally overrides the percentage to allow for the minimum. El número de filas de una página de nivel intermedio del índice no es nunca inferior a dos, independientemente de lo bajo que sea el valor de fillfactor.The number of rows on an intermediate index page is never less than two, regardless of how low the value of fillfactor.

FILLFACTOR =fillfactor FILLFACTOR =fillfactor
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Especifica un porcentaje que indica cuánto debe llenar el Motor de base de datosDatabase Engine el nivel hoja de cada página de índice durante la creación o nueva generación de los índices.Specifies a percentage that indicates how full the Motor de base de datosDatabase Engine should make the leaf level of each index page during index creation or rebuild. fillfactor debe ser un valor entero comprendido entre 1 y 100.fillfactor must be an integer value from 1 to 100. El valor predeterminado es 0.The default is 0. Si fillfactor es 100 o 0, el Motor de base de datosDatabase Engine crea índices con las páginas hoja llenas al máximo de su capacidad.If fillfactor is 100 or 0, the Motor de base de datosDatabase Engine creates indexes with leaf pages filled to capacity.

Nota

Los valores de fill factor 0 y 100 son idénticos.Fill factor values 0 and 100 are the same in all respects.

La configuración de FILLFACTOR solo se aplica cuando se crea o se vuelve a generar el índice.The FILLFACTOR setting applies only when the index is created or rebuilt. Motor de base de datosDatabase Engine no mantiene dinámicamente el porcentaje especificado de espacio disponible de las páginas.The Motor de base de datosDatabase Engine does not dynamically keep the specified percentage of empty space in the pages. Para ver la configuración del factor de relleno, use la vista de catálogo sys.indexes.To view the fill factor setting, use the sys.indexes catalog view.

Importante

La creación de un índice clúster con un valor de FILLFACTOR menor que 100 afecta a la cantidad de espacio de almacenamiento que ocupan los datos, porque Motor de base de datosDatabase Engine vuelve a distribuir los datos cuando crea el índice clúster.Creating a clustered index with a FILLFACTOR less than 100 affects the amount of storage space the data occupies because the Motor de base de datosDatabase Engine redistributes the data when it creates the clustered index.

Para obtener más información, vea Especificar el factor de relleno para un índice.For more information, see Specify Fill Factor for an Index.

SORT_IN_TEMPDB = { ON | OFF }SORT_IN_TEMPDB = { ON | OFF }
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Indica si los resultados de ordenación temporales deben almacenarse en tempdb.Specifies whether to store temporary sort results in tempdb. El valor predeterminado es OFF.The default is OFF.

ONON
Los resultados de ordenación intermedios utilizados para generar el índice se almacenan en tempdb.The intermediate sort results that are used to build the index are stored in tempdb. Esto puede reducir el tiempo necesario para crear un índice si tempdb y la base de datos de usuarios están en conjuntos de discos distintos.This may reduce the time required to create an index if tempdb is on a different set of disks than the user database. Sin embargo, esto aumenta la cantidad de espacio en disco utilizado durante la generación del índice.However, this increases the amount of disk space that is used during the index build.

OFFOFF
Los resultados de orden intermedios se almacenan en la misma base de datos que el índice.The intermediate sort results are stored in the same database as the index.

Además del espacio necesario en la base de datos del usuario para crear el índice, tempdb debe tener la misma cantidad de espacio adicional para almacenar los resultados de orden intermedio.In addition to the space required in the user database to create the index, tempdb must have about the same amount of additional space to hold the intermediate sort results. Para más información, vea Opción SORT_IN_TEMPDB para índices.For more information, see SORT_IN_TEMPDB Option For Indexes.

IGNORE_DUP_KEY =OFF IGNORE_DUP_KEY =OFF
No tiene ningún efecto sobre los índices espaciales porque el tipo de índice nunca es único.Has no effect for spatial indexes because the index type is never unique. No establezca esta opción en ON porque, de lo contrario, se producirá un error.Do not set this option to ON, or else an error is raised.

STATISTICS_NORECOMPUTE = { ON | OFF}STATISTICS_NORECOMPUTE = { ON | OFF}
Especifica si se vuelven a calcular las estadísticas de distribución.Specifies whether distribution statistics are recomputed. El valor predeterminado es OFF.The default is OFF.

ONON
Las estadísticas obsoletas no se vuelven a calcular automáticamente.Out-of-date statistics are not automatically recomputed.

OFFOFF
Se habilita la actualización automática de las estadísticas.Automatic statistics updating are enabled.

Para restaurar la actualización automática de estadísticas, establezca STATISTICS_NORECOMPUTE en OFF o ejecute UPDATE STATISTICS sin la cláusula NORECOMPUTE.To restore automatic statistics updating, set the STATISTICS_NORECOMPUTE to OFF, or execute UPDATE STATISTICS without the NORECOMPUTE clause.

Importante

Deshabilitar el cálculo automático de estadísticas de distribución puede impedir que el optimizador de consultas elija los planes de ejecución óptimos de las consultas relativas a la tabla.Disabling automatic recomputation of distribution statistics may prevent the query optimizer from picking optimal execution plans for queries involving the table.

DROP_EXISTING = { ON | OFF }DROP_EXISTING = { ON | OFF }
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Especifica que se quite y se vuelva a generar el índice espacial con nombre preexistente.Specifies that the named, preexisting spatial index is dropped and rebuilt. El valor predeterminado es OFF.The default is OFF.

ONON
El índice existente se quita y se vuelve a generar.The existing index is dropped and rebuilt. El nombre de índice especificado debe ser el mismo que el de un índice actualmente existente; sin embargo, la definición se puede modificar.The index name specified must be the same as a currently existing index; however, the index definition can be modified. Por ejemplo, puede especificar columnas, criterio de ordenación, esquema de particionamiento u opciones de índice diferentes.For example, you can specify different columns, sort order, partition scheme, or index options.

OFFOFF
Se muestra un error si ya existe el nombre de índice especificado.An error is displayed if the specified index name already exists.

El tipo de índice no puede cambiarse utilizando DROP_EXISTING.The index type cannot be changed by using DROP_EXISTING.

ONLINE =OFF ONLINE =OFF
Especifica que las tablas subyacentes y los índices asociados no están disponibles para la realización de consultas y modificaciones de datos durante la operación del índice.Specifies that underlying tables and associated indexes are not available for queries and data modification during the index operation. En esta versión de SQL ServerSQL Server, no se admiten generaciones de índices en línea para los índices espaciales.In this version of SQL ServerSQL Server, online index builds are not supported for spatial indexes. Si esta opción se establece en ON para un índice espacial, se produce un error.If this option is set to ON for a spatial index, an error is raised. Omita la opción ONLINE o establezca ONLINE en OFF.Either omit the ONLINE option or set ONLINE to OFF.

Una operación de índice sin conexión para crear, volver a crear o quitar un índice espacial adquiere un bloqueo de modificación del esquema (Sch-M) de la tabla.An offline index operation that creates, rebuilds, or drops a spatial index, acquires a Schema modification (Sch-M) lock on the table. Esto evita que todos los usuarios tengan acceso a la tabla subyacente durante la operación.This prevents all user access to the underlying table for the duration of the operation.

Nota

Las operaciones de índices en línea no están disponibles en todas las ediciones de SQL ServerSQL Server.Online index operations are not available in every edition of SQL ServerSQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL ServerSQL Server, vea Características compatibles con las ediciones de SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

ALLOW_ROW_LOCKS = { ON | OFF }ALLOW_ROW_LOCKS = { ON | OFF }
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Especifica si se permiten los bloqueos de fila.Specifies whether row locks are allowed. El valor predeterminado es ON.The default is ON.

ONON
Los bloqueos de fila se admiten al obtener acceso al índice.Row locks are allowed when accessing the index. El Motor de base de datosDatabase Engine determina cuándo se usan los bloqueos de fila.The Motor de base de datosDatabase Engine determines when row locks are used.

OFFOFF
No se usan los bloqueos de fila.Row locks are not used.

ALLOW_PAGE_LOCKS = { ON | OFF }ALLOW_PAGE_LOCKS = { ON | OFF }
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Especifica si se permiten bloqueos de página.Specifies whether page locks are allowed. El valor predeterminado es ON.The default is ON.

ONON
Los bloqueos de página se permiten al obtener acceso al índice.Page locks are allowed when accessing the index. Motor de base de datosDatabase Engine determina el momento en que se usan los bloqueos de página.The Motor de base de datosDatabase Engine determines when page locks are used.

OFFOFF
No se utilizan bloqueos de página.Page locks are not used.

MAXDOP =max_degree_of_parallelism MAXDOP =max_degree_of_parallelism
Se aplica a: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2008SQL Server 2008 and later) and Base de datos SQL de AzureAzure SQL Database

Invalida la opción de configuración max degree of parallelism mientras se prolongue la operación del índice.Overrides the max degree of parallelism configuration option for the duration of the index operation. Utilice MAXDOP para establecer un límite para el número de procesadores utilizados en la ejecución de un plan paralelo.Use MAXDOP to limit the number of processors used in a parallel plan execution. El máximo es 64 procesadores.The maximum is 64 processors.

Importante

Aunque la opción MAXDOP se admite desde el punto de vista sintáctico, actualmente CREATE SPATIAL INDEX siempre utiliza un solo procesador.Although the MAXDOP option is syntactically supported, CREATE SPATIAL INDEX currently always uses only a single processor.

max_degree_of_parallelism puede tener estos valores:max_degree_of_parallelism can be:

11
Suprime la generación de planes paralelos.Suppresses parallel plan generation.

>1>1
Restringe el número máximo de procesadores utilizados en una operación de índice paralelo al número especificado o a un número inferior, en función de la actual carga de trabajo del sistema.Restricts the maximum number of processors used in a parallel index operation to the specified number or fewer based on the current system workload.

0 (predeterminado)0 (default)
Usa el número real de procesadores o menos, según la carga de trabajo actual del sistema.Uses the actual number of processors or fewer based on the current system workload.

Para obtener más información, vea Configurar operaciones de índice en paralelo.For more information, see Configure Parallel Index Operations.

Nota

Las operaciones de índices en paralelo no están disponibles en todas las ediciones de MicrosoftMicrosoftSQL ServerSQL Server.Parallel index operations are not available in every edition of MicrosoftMicrosoftSQL ServerSQL Server. Para obtener una lista de las características admitidas por las ediciones de SQL ServerSQL Server, vea Características compatibles con las ediciones de SQL Server 2016.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

DATA_COMPRESSION = {NONE | ROW | PAGE}DATA_COMPRESSION = {NONE | ROW | PAGE}
Se aplica a: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) y versiones posteriores) y Base de datos SQL de AzureAzure SQL DatabaseApplies to: SQL ServerSQL Server (SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later) and Base de datos SQL de AzureAzure SQL Database

Determina el nivel de compresión de datos usado por el índice.Determines the level of data compression used by the index.

NingunoNONE
El índice no usa ninguna compresión de los datos.No compression used on data by the index

ROWROW
El índice no usa compresión de filas.Row compression used on data by the index

PAGEPAGE
El índice no usa compresión de páginas.Page compression used on data by the index

NotasRemarks

Cada opción solamente puede especificarse una vez para cada instrucción CREATE SPATIAL INDEX.Every option can be specified only once per CREATE SPATIAL INDEX statement. Si se especifica dos veces cualquier opción, se produce un error.Specifying a duplicate of any option raises an error.

Puede crear un máximo de 249 índices espaciales en cada columna espacial de una tabla.You can create up to 249 spatial indexes on each spatial column in a table. Crear más de un índice espacial en una columna espacial concreta puede resultar útil, por ejemplo, para indizar parámetros de teselación diferentes en una única columna.Creating more than one spatial index on specific spatial column can be useful, for example, to index different tessellation parameters in a single column.

Importante

Existen otras restricciones para la creación de índices espaciales.There are a number of other restrictions on creating a spatial index. Para más información, vea Información general sobre los índices espaciales.For more information, see Spatial Indexes Overview.

Una generación de índices no puede usar el paralelismo de procesos disponible.An index build cannot make use of available process parallelism.

Métodos que se admiten en los índices espacialesMethods supported on spatial indexes

Bajo ciertas condiciones, los índices espaciales admiten determinados métodos de geometría orientados a conjuntos.Under certain conditions, spatial indexes support a number of set-oriented geometry methods. Para más información, vea Información general sobre los índices espaciales.For more information, see Spatial Indexes Overview.

Los índices espaciales y la creación de particionesSpatial indexes and partitioning

De forma predeterminada, si se crea un índice espacial en una tabla con particiones, el índice se particiona según el esquema de partición de la tabla.By default, if a spatial index is created on a partitioned table, the index is partitioned according to the partition scheme of the table. Esto garantiza que los datos del índice y la fila relacionada se almacenen en la misma partición.This assures that index data and the related row are stored in the same partition.

En este caso, para modificar el esquema de partición de la tabla base, habría que quitar el índice espacial antes de volver a particionar la tabla base.In this case, to alter the partition scheme of the base table, you would have to drop the spatial index before you can repartition the base table. Para evitar esta restricción, puede especificar la opción "ON filegroup" durante la creación de un índice espacial.To avoid this restriction, when you are creating a spatial index, you can specify the "ON filegroup" option. Para obtener más información, vea "Los índices espaciales y los grupos de archivos", más adelante en este tema.For more information, see "Spatial Indexes and Filegroups," later in this topic.

Los índices espaciales y los grupos de archivosSpatial indexes and filegroups

De forma predeterminada los índices espaciales se particionan en los mismos grupos de archivos que la tabla en la que se especifica el índice.By default, spatial indexes are partitioned to the same filegroups as the table on which the index is specified. Esto puede invalidarse utilizando la especificación del grupo de archivos:This can be overridden by using the filegroup specification:

[ ON { filegroup_name | "default" } ][ ON { filegroup_name | "default" } ]
Si especifica un grupo de archivos para un índice espacial, el índice se sitúa en ese grupo de archivos, independientemente del esquema de partición de la tabla.If you specify a filegroup for a spatial index, the index is placed on that filegroup, regardless of the partitioning scheme of the table.

Vistas de catálogo para los índices espacialesCatalog views for spatial indexes

Las vistas de catálogo siguientes son específicas de los índices espaciales:The following catalog views are specific to spatial indexes:

sys.spatial_indexessys.spatial_indexes
Representa la información del índice principal de los índices espaciales.Represents the main index information of the spatial indexes.

sys.spatial_index_tessellationssys.spatial_index_tessellations
Representa la información acerca del esquema de teselación y los parámetros de cada uno de los índices espaciales.Represents the information about the tessellation scheme and parameters of each of the spatial indexes.

Comentarios adicionales sobre la creación de índicesAdditional remarks about creating indexes

Para más información sobre la creación de índices, vea la sección "Comentarios" de CREATE INDEX (Transact-SQL).For more information about creating indexes, see the "Remarks" section in CREATE INDEX (Transact-SQL).

PermisosPermissions

El usuario debe disponer del permiso ALTER en la tabla o vista o bien ser miembro del rol de servidor fijo sysadmin o de los roles fijos de bases de datos db_ddladmin y db_owner.The user must have ALTER permission on the table or view, or be a member of the sysadmin fixed server role or the db_ddladmin and db_owner fixed database roles.

EjemplosExamples

A.A. Crear un índice espacial en una columna de geometríaCreating a spatial index on a geometry column

En este ejemplo se crea una tabla denominada SpatialTable que contiene una columna de tipo geometry, denominada geometry_col.The following example creates a table named SpatialTable that contains a geometry type column, geometry_col. A continuación, se crea un índice espacial, SIndx_SpatialTable_geometry_col1, en la columna geometry_col.The example then creates a spatial index, SIndx_SpatialTable_geometry_col1, on the geometry_col. El ejemplo utiliza el esquema de teselación predeterminado y especifica el cuadro de límite.The example uses the default tessellation scheme and specifies the bounding box.

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.B. Crear un índice espacial en una columna de geometríaCreating a spatial index on a geometry column

En el ejemplo siguiente se crea un segundo índice espacial, SIndx_SpatialTable_geometry_col2, en la columna geometry_col de la tabla SpatialTable.The following example creates a second spatial index, SIndx_SpatialTable_geometry_col2, on the geometry_col in the SpatialTable table. En el ejemplo se especifica GEOMETRY_GRID como esquema de teselación.The example specifies GEOMETRY_GRID as the tessellation scheme. También especifica el cuadro de límite, densidades diferentes para los distintos niveles de la cuadrícula y 64 celdas por objeto.The example also specifies the bounding box, different densities on different grid levels, and 64 cells per object. También establece el relleno del índice en ON.The example also sets the index padding to 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.C. Crear un índice espacial en una columna de geometríaCreating a spatial index on a geometry column

El ejemplo siguiente crea un tercer índice espacial, SIndx_SpatialTable_geometry_col3, en la columna geometry_col de la tabla SpatialTable.The following example creates a third spatial index, SIndx_SpatialTable_geometry_col3, on the geometry_col in the SpatialTable table. El ejemplo utiliza el esquema de teselación predeterminado.The example uses the default tessellation scheme. También especifica el cuadro de límite y utiliza densidades de celda diferentes en los niveles tercero y cuarto, y utiliza el número predeterminado de celdas por objeto.The example specifies the bounding box and uses different cell densities on the third and fourth levels, while using the default number of cells per object.

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.D. Cambiar una opción específica de los índices espacialesChanging an option that is specific to spatial indexes

El ejemplo siguiente vuelve a generar el índice espacial creado en el ejemplo anterior, SIndx_SpatialTable_geography_col3, especificando una nueva densidad LEVEL_3 con DROP_EXISTING = ON.The following example rebuilds the spatial index created in the preceding example, SIndx_SpatialTable_geography_col3, by specifying a new LEVEL_3 density with 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.E. Crear un índice espacial en una columna de geografíaCreating a spatial index on a geography column

En este ejemplo se crea una tabla denominada SpatialTable2 que contiene una columna de tipo geography, denominada geography_col.The following example creates a table named SpatialTable2 that contains a geography type column, geography_col. A continuación, se crea un índice espacial, SIndx_SpatialTable_geography_col1, en la columna geography_col.The example then creates a spatial index, SIndx_SpatialTable_geography_col1, on the geography_col. En el ejemplo se usan los valores predeterminados de los parámetros del esquema de teselación GEOGRAPHY_AUTO_GRID.The example uses the default parameters values of the GEOGRAPHY_AUTO_GRID tessellation scheme.

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

Nota

No es posible especificar un cuadro de límite para los índices de cuadrícula de geografía.For geography grid indexes, a bounding box cannot be specified.

F.F. Crear un índice espacial en una columna de geografíaCreating a spatial index on a geography column

En el ejemplo siguiente se crea un segundo índice espacial, SIndx_SpatialTable_geography_col2, en la columna geography_col de la tabla SpatialTable2.The following example creates a second spatial index, SIndx_SpatialTable_geography_col2, on the geography_col in the SpatialTable2 table. En el ejemplo se especifica GEOGRAPHY_GRID como esquema de teselación.The example specifies GEOGRAPHY_GRID as the tessellation scheme. También especifica densidades de la cuadrícula diferentes para los distintos niveles y 64 celdas por objeto.The example also specifies different grid densities on different levels and 64 cells per object. También establece el relleno del índice en ON.The example also sets the index padding to 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.G. Crear un índice espacial en una columna de geografíaCreating a spatial index on a geography column

A continuación, el ejemplo crea un tercer índice espacial, SIndx_SpatialTable_geography_col3, en la columna geography_col de la tabla SpatialTable2.The example then creates a third spatial index, SIndx_SpatialTable_geography_col3, on the geography_col in the SpatialTable2 table. Utiliza el esquema de teselación predeterminado, GEOGRAPHY_GRID, y el valor predeterminado de CELLS_PER_OBJECT (16).The example uses the default tessellation scheme, GEOGRAPHY_GRID, and the default CELLS_PER_OBJECT value (16).

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

Vea tambiénSee also

ALTER INDEX (Transact-SQL) ALTER INDEX (Transact-SQL)
CREATE INDEX (Transact-SQL) CREATE INDEX (Transact-SQL)
CREATE PARTITION FUNCTION (Transact-SQL) CREATE PARTITION FUNCTION (Transact-SQL)
CREATE PARTITION SCHEME (Transact-SQL) CREATE PARTITION SCHEME (Transact-SQL)
CREATE STATISTICS (Transact-SQL) CREATE STATISTICS (Transact-SQL)
CREATE TABLE (Transact-SQL) CREATE TABLE (Transact-SQL)
Tipos de datos (Transact-SQL) Data Types (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL) DBCC SHOW_STATISTICS (Transact-SQL)
DROP INDEX (Transact-SQL) DROP INDEX (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
sys.index_columns (Transact-SQL) sys.index_columns (Transact-SQL)
sys.indexes (Transact-SQL) sys.indexes (Transact-SQL)
sys.spatial_index_tessellations (Transact-SQL) sys.spatial_index_tessellations (Transact-SQL)
sys.spatial_indexes (Transact-SQL) sys.spatial_indexes (Transact-SQL)
Información general sobre los índices espacialesSpatial Indexes Overview