CREATE SPATIAL INDEX (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

Создает пространственный индекс для указанной таблицы и столбца в SQL Server. Индекс может быть создан до появления данных в таблице. Можно создать индексы для таблиц или представлений в другой базе данных, если указать полное имя этой базы данных. Для создания пространственного индекса необходимо, чтобы у таблицы был кластеризованный первичный ключ. Пространственные индексы не могут быть заданы в индексированных представлениях. Сведения о пространственных индексах см. в разделе Общие сведения о пространственных индексах.

Соглашения о синтаксисе Transact-SQL

Синтаксис

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 }  
}  

Аргументы

index_name
Имя индекса. Имена индексов должны быть уникальными в пределах таблицы, но не обязательно должны быть уникальными в пределах базы данных. Имена индексов должны удовлетворять правилам для идентификаторов.

ON <object> (spatial_column_name)
Указывает объект (база данных, схема или таблица), для которого будет создан индекс, и имя пространственного столбца.

Аргумент spatial_column_name указывает пространственный столбец, на котором основан индекс. В одном определении пространственного индекса может быть задан только один пространственный столбец, но на основе одного столбца типа geometry или geography можно создать несколько пространственных индексов.

USING
Указывает схему тесселяции пространственного индекса. Этому параметру присваивается значение определенного типа, указанное в следующей таблице:

Столбец типа данных Схема тесселяции
geometry GEOMETRY_GRID
geometry GEOMETRY_AUTO_GRID
geography GEOGRAPHY_GRID
geography GEOGRAPHY_AUTO_GRID

Пространственный индекс можно создать только для столбца типа geometry или geography, иначе происходит ошибка. Ошибка происходит при передаче недопустимого параметра для данного типа.

Сведения о том, как SQL Server реализует тесселяции, см. в обзоре пространственных индексов.

ON filegroup_name
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Создает заданный индекс в указанной файловой группе. Если местоположение не указано и таблица не секционирована, индекс использует ту же файловую группу, что и базовая таблица. Файловая группа должна существовать.

ON "default"
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Создает заданный индекс в файловой группе, используемой по умолчанию.

Слово "default" в этом контексте не является ключевым. Это идентификатор файловой группы по умолчанию, который должен иметь разделители, как в выражениях ON "default" или ON [default]. Если указано значение "default" (по умолчанию), параметр QUOTED_IDENTIFIER должен иметь значение ON для текущего сеанса. Этот параметр принимается по умолчанию. Дополнительные сведения см. в статье SET QUOTED_IDENTIFIER (Transact-SQL).

<object>::=
Полное или неполное имя индексируемого объекта.

database_name
Имя базы данных.

schema_name
Имя схемы, которой принадлежит таблица.

table_name
Имя таблицы для индексирования.

База данных SQL Azure поддерживает формат трехкомпонентного имени имя_базы_данных.[имя_схемы].имя_объекта, если имя_базы_данных — это текущая база данных или tempdb, а имя_объекта начинается с символа #.

Параметры USING

GEOMETRY_GRID
Указывает используемую схему тесселяции сетки типа geometry. Параметр GEOMETRY_GRID может быть указан только для столбца данных типа geometry. GEOMETRY_GRID позволяет вручную корректировать схему тесселяции.

GEOMETRY_AUTO_GRID
Область применения: SQL Server (SQL Server 2012 (11.x) и более поздних версий) и База данных SQL Azure

Может быть указан только для столбца данных типа geometry. Это значение используется по умолчанию для этого типа данных, его не нужно указывать.

GEOGRAPHY_GRID
Указывает схему тесселяции географической сетки. Параметр GEOGRAPHY_GRID может быть указан только для столбца данных типа geography.

GEOGRAPHY_AUTO_GRID
Область применения: SQL Server (SQL Server 2012 (11.x) и более поздних версий) и База данных SQL Azure

Может быть указан только для столбца данных типа geography. Это значение используется по умолчанию для этого типа данных, его не нужно указывать.

Параметры WITH

BOUNDING_BOX
Указывает числовой четырехэлементный кортеж, который определяет четыре координаты ограничивающего прямоугольника: координаты x-min и y-min нижнего левого угла, и координаты x-max и y-max верхнего правого угла.

xmin
Задает координату левого нижнего угла ограничивающего прямоугольника по оси X.

ymin
Задает координату левого нижнего угла ограничивающего прямоугольника по оси Y.

xmax
Задает координату x правого верхнего угла ограничивающего прямоугольника.

ymax
Задает координату правого верхнего угла ограничивающего прямоугольник по оси Y.

XMIN = xmin
Указывает имя свойства и значение для координаты по оси X левого нижнего угла ограничивающего прямоугольника.

YMIN =ymin
Указывает имя свойства и значение для координаты по оси Y левого нижнего угла ограничивающего прямоугольника.

XMAX =xmax
Указывает имя свойства и значение для координаты по оси X правого верхнего угла ограничивающего прямоугольника.

YMAX =ymax
Указывает имя свойства и значение для координаты по оси Y правого верхнего угла ограничивающего прямоугольника.

Примечание.

Координаты ограничивающего прямоугольника применяются только в предложении USING GEOMETRY_GRID.

xmax должен быть больше xmin, ymax должен быть больше ymin. Можно задать любое допустимое представление значения float, при условии, что xmax>xmin и ymax>ymin. В противном случае формируются соответствующие ошибки.

Значения по умолчанию отсутствуют.

В именах свойств ограничивающего прямоугольника учитывается регистр, независимо от параметров сортировки базы данных.

Каждое имя свойства необходимо указать только один раз. Их можно указывать в любом порядке. Например, следующие предложения эквивалентны:

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

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

GRIDS
Определяет плотность сетки на каждом уровне схемы тесселяции. Если выбраны GEOMETRY_AUTO_GRID и GEOGRAPHY_AUTO_GRID, этот параметр отключен.

Сведения о тесселяции в см. в разделе Общие сведения о пространственных индексах.

Параметры GRIDS имеют следующие значения:

LEVEL_1
Указывает сетку первого (верхнего) уровня.

LEVEL_2
Указывает сетку второго уровня.

LEVEL_3
Указывает сетку третьего уровня.

LEVEL_4
Указывает сетку четвертого уровня.

Низкое
Указывает наименьшую возможную плотность сетки на данном уровне. LOW соответствует 16 ячейкам (сетка 4x4).

MEDIUM
Указывает среднюю плотность сетки на данном уровне. MEDIUM соответствует 64 ячейкам (сетка 8x8).

ВЫСОКИЙ УРОВЕНЬ
Указывает наибольшую возможную плотность сетки на данном уровне. HIGH соответствует 256 ячейкам (сетка 16x16).

Примечание.

С помощью имен уровней можно указывать уровни в любом порядке, а также пропускать уровни. Если используется имя для любого уровня, то необходимо использовать имя любого другого указанного уровня. Если уровень пропущен, то по умолчанию назначается плотность MEDIUM.

Предупреждение

Если указана недопустимая плотность, возвращается ошибка.

CELLS_PER_OBJECT =n
Задает количество ячеек тесселяции на объект, которое может использоваться процессом тесселяции для одного пространственного объекта в индексе. Аргумент n может иметь любое целочисленное значение от 1 до 8192 включительно. Если передано неверное число или число превышает максимальное число ячеек для указанной тесселяции, то возникает ошибка.

Параметр CELLS_PER_OBJECT имеет следующие значения по умолчанию:

параметр USING Число ячеек на объект по умолчанию
GEOMETRY_GRID 16
GEOMETRY_AUTO_GRID 8
GEOGRAPHY_GRID 16
GEOGRAPHY_AUTO_GRID 12

Если объект на верхнем уровне охватывает больше ячеек, чем указано в параметре n, в ходе индексирования используется столько ячеек, сколько необходимо для полной тесселяции на верхнем уровне. В подобных случаях объекту может быть выделено больше ячеек, чем было указано. В этом случае максимальное число представляет собой число ячеек, формируемых сеткой верхнего уровня, которое зависит от плотности.

Значение CELLS_PER_OBJECT используется правилом тесселяции для числа ячеек на объект. Сведения о правилах тесселяции в см. в разделе Общие сведения о пространственных индексах.

PAD_INDEX = { ON | OFF }
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Определяет разреженность индекса. Значение по умолчанию — OFF.

DNS
Указывает, что процент свободного места, определяемый аргументом fillfactor, применяется к страницам индекса промежуточного уровня.

OFF или fillfactor не указан
Указывает, что страницы промежуточного уровня заполняются почти полностью, при этом остается достаточно места по крайней мере для одной строки максимального размера, возможного в этом индексе при заданном наборе ключей на промежуточных страницах.

Параметр PAD_INDEX имеет смысл только в случае, если указан параметр FILLFACTOR, так как использует процентное значение, указанное в нем. Если процент, указанный для FILLFACTOR, недостаточно велик, чтобы разрешить одну строку, ядро СУБД внутренне переопределяет процент, чтобы обеспечить минимальное значение. Количество строк на странице индекса промежуточного уровня никогда не бывает менее двух даже при самых малых значениях аргумента fillfactor.

FILLFACTOR =fillfactor
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Указывает, на сколько процентов ядро СУБД должно заполнять конечный уровень каждой страницы индекса во время создания и изменения индекса. Значение fillfactor должно быть целым числом от 1 до 100. По умолчанию установлено значение 0. Если значение fillfactor равно 100 или 0, ядро СУБД создает индексы с конечными страницами, заполненными емкостью.

Примечание.

Значения коэффициентов заполнения 0 и 100 идентичны.

Аргумент FILLFACTOR действует только при создании или перестройке индекса. Ядро СУБД не сохраняет динамически указанный процентный объем свободного места на страницах. Значение коэффициента заполнения можно увидеть в представлении каталога sys.indexes.

Внимание

Создание кластеризованного индекса с помощью FILLFACTOR меньше 100 влияет на объем дискового пространства, которое занимает данные, так как ядро СУБД перераспространяет данные при создании кластеризованного индекса.

Дополнительные сведения см. в статье Указание коэффициента заполнения для индекса.

SORT_IN_TEMPDB = { ON | OFF }
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Указывает, сохранять ли временные результаты сортировки в базе данных tempdb. Значение по умолчанию — OFF.

DNS
Промежуточные результаты сортировки, используемые для создания индекса, хранятся в базе данных tempdb. Это может уменьшить время, необходимое для создания индекса, если база данных tempdb и база данных пользователя находятся на разных наборах дисков. Однако это увеличивает использование места на диске, которое используется при индексировании.

ВЫКЛ.
Промежуточные результаты сортировки хранятся в той же базе данных, где и индекс.

Кроме места в базе данных пользователя, необходимого для создания индекса, требуется примерно столько же дополнительного места в базе данных tempdb для хранения промежуточных результатов сортировки. Дополнительные сведения см. в разделе Параметр SORT_IN_TEMPDB для индексов.

IGNORE_DUP_KEY =OFF
Не влияет на пространственные индексы, поскольку для этого типа индекса ограничение уникальности неприменимо. Не устанавливайте этот параметр в значение ON, иначе произойдет ошибка.

STATISTICS_NORECOMPUTE = { ON | OFF}
Указывает, выполнялся ли перерасчет статистики распределения. Значение по умолчанию — OFF.

DNS
Устаревшие статистики не пересчитываются автоматически.

ВЫКЛ.
Автоматическое обновление статистических данных включено.

Чтобы восстановить автоматическое обновление статистики, следует установить STATISTICS_NORECOMPUTE в значение OFF или выполнить UPDATE STATISTICS без предложения NORECOMPUTE.

Внимание

Отключение автоматического пересчета статистики распределения может помешать оптимизатору запросов выбрать оптимальные планы выполнения запросов, обращенных к таблице.

DROP_EXISTING = { ON | OFF }
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Указывает, что именованный существующий пространственный индекс удален и перестраивается. Значение по умолчанию — OFF.

DNS
Существующий индекс удаляется и перестраивается. Указанное имя индекса должно совпадать с уже существующим индексом, но определение индекса может быть изменено. Например, можно указать другие столбцы, порядок сортировки, схему секционирования или параметры индекса.

ВЫКЛ.
Выдается ошибка, если индекс с указанным именем уже существует.

Тип индекса не может быть изменен с помощью аргумента DROP_EXISTING.

ONLINE =OFF
Указывает, что базовые таблицы и связанные индексы будут недоступны для запросов и изменения данных во время операций с индексами. В этой версии SQL Server сборки индексов в сети не поддерживаются для пространственных индексов. Если этому параметру присвоено значение ON для пространственного индекса, формируется ошибка. Не указывайте параметр ONLINE или установите его в значение OFF.

Операция с индексами вне сети, в ходе которой создается, перестраивается или удаляется пространственный индекс, получает блокировку изменения схемы для таблицы. Это предотвращает доступ к базовой таблице всех пользователей во время операции.

Примечание.

Операции с индексами в сети недоступны в каждом выпуске SQL Server. Сведения о функциях, поддерживаемых различными выпусками SQL Server, см. в статье Возможности, поддерживаемые выпусками SQL Server 2016.

ALLOW_ROW_LOCKS = { ON | OFF }
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Указывает, разрешена ли блокировка строк. Значение по умолчанию — ON.

DNS
Блокировки строк допустимы при доступе к индексу. Ядро СУБД определяет, когда используются блокировки строк.

ВЫКЛ.
Блокировки строк не используются.

ALLOW_PAGE_LOCKS = { ON | OFF }
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Указывает, разрешена ли блокировка страниц. Значение по умолчанию — ON.

DNS
Блокировки страниц возможны при доступе к индексу. Ядро СУБД определяет, когда используются блокировки страниц.

ВЫКЛ.
Блокировки страниц не используются.

MAXDOP =max_degree_of_parallelism
Область применения: SQL Server (SQL Server 2008 (10.0.x) и более поздних версий) и База данных SQL Azure

Переопределяет параметр конфигурации max degree of parallelism только на время выполнения операции с индексами. MAXDOP можно использовать для ограничения числа процессоров, используемых при параллельном выполнении планов. Максимальное число процессоров — 64.

Внимание

Несмотря на синтаксическую поддержку параметра MAXDOP, в настоящее время инструкция CREATE SPATIAL INDEX всегда использует только один процессор.

Параметр max_degree_of_parallelism может иметь одно из следующих значений:

1
Подавляет формирование параллельных планов.

>1
Ограничивает максимальное количество процессоров, используемых в параллельных операциях с индексами, заданным или меньшим числом в зависимости от текущей рабочей нагрузки системы.

0 (по умолчанию)
В зависимости от текущей рабочей нагрузки системы использует реальное или меньшее число процессоров.

Дополнительные сведения см. в статье Настройка параллельных операций с индексами.

Примечание.

Параллельные операции с индексами доступны не во всех выпусках Microsoft SQL Server. Сведения о функциях, поддерживаемых различными выпусками SQL Server, см. в статье Возможности, поддерживаемые выпусками SQL Server 2016.

DATA_COMPRESSION = {NONE | ROW | PAGE}
Область применения: SQL Server (SQL Server 2012 (11.x) и более поздних версий) и База данных SQL Azure

Определяет уровень сжатия данных, используемого индексом.

NONE
Сжатие данных не используется.

ROW
Используется сжатие строк.

СТРАНИЦА
Используется сжатие страниц.

Замечания

Каждый параметр можно указывать только один раз для инструкции CREATE SPATIAL INDEX. При повторении любого параметра формируется ошибка.

Можно создать до 249 пространственных индексов для каждого пространственного столбца в таблице. Создание более чем одного пространственного индекса для определенного пространственного столбца может быть полезно, например, для индексации различных параметров тесселяции в одном столбце.

Внимание

Существует ряд других ограничений на создание пространственного индекса. Дополнительные сведения см. в разделе Общие сведения о пространственных индексах.

Для построения индексов нельзя воспользоваться доступным параллелизмом процессов.

Поддерживаемые методы для пространственных индексов

При определенных условиях пространственные индексы поддерживают несколько геометрических методов, ориентированных на наборы. Дополнительные сведения см. в разделе Общие сведения о пространственных индексах.

Пространственные индексы и секционирование

По умолчанию, если пространственный индекс создан для секционированной таблицы, индекс секционируется в соответствии со схемой секционирования таблицы. Это обеспечивает сохранение данных индекса и связанной строки в одной секции.

В этом случае при изменении схемы секционирования базовой таблицы нужно удалить пространственный индекс, прежде чем заново секционировать базовую таблицу. Чтобы обойти это ограничение при создании пространственного индекса, можно указать параметр «ON filegroup». Дополнительные сведения см. в разделе «Пространственные индексы и файловые группы» далее в разделе.

Пространственные индексы и файловые группы

По умолчанию пространственные индексы секционируются на те же файловые группы, что и таблица, для которой назначен индекс. Это можно переопределить при помощи спецификации для файловой группы:

[ ON { filegroup_name | "default" } ]
Если указать файловую группу для пространственного индекса, то индекс помещается в эту файловую группу, независимо от схемы секционирования таблицы.

Представления каталога для пространственных индексов

Следующие представления каталога используются только с пространственными индексами.

sys.spatial_indexes
Представляет в главном индексе сведения о пространственных индексах.

sys.spatial_index_tessellations
Представляет сведения о схеме тесселяции и параметрах каждого пространственного индекса.

Дополнительные примечания о создании индексов

Дополнительные сведения о создании индексов см. в подразделе "Примечания" раздела CREATE INDEX (Transact-SQL).

Разрешения

Пользователь должен иметь разрешение ALTER для таблицы или представления либо быть членом предопределенной роли сервера sysadmin или предопределенных ролей базы данных db_ddladmin и db_owner.

Примеры

А. Создание пространственного индекса для столбца типа geometry

В следующем примере создается таблица с именем SpatialTable, которая содержит столбец типа geometry, geometry_col. Затем для столбца SIndx_SpatialTable_geometry_col1 создается пространственный индекс geometry_col. В примере используется схема тесселяции по умолчанию и назначается ограничивающий прямоугольник.

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. Создание пространственного индекса для столбца типа geometry

В следующем примере для столбца SIndx_SpatialTable_geometry_col2 в таблице geometry_col создается второй пространственный индекс, SpatialTable. В качестве схемы тесселяции в примере задается GEOMETRY_GRID. В примере также назначается ограничивающий прямоугольник, различные плотности на разных уровнях сетки и 64 ячейки на объект. В примере также задается значение 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. Создание пространственного индекса для столбца типа geometry

Следующий пример создает третий пространственный индекс, SIndx_SpatialTable_geometry_col3, для столбца geometry_col в таблице SpatialTable. В примере используется схема тесселяции по умолчанию. В примере назначается ограничивающий прямоугольник и используются различные плотности ячеек на третьем и четвертом уровнях, при этом выбрано число ячеек на объект по умолчанию.

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. Изменение параметра для пространственных индексов

В следующем примере перестраивается пространственный индекс SIndx_SpatialTable_geography_col3, созданный в предшествующем примере, путем назначения новой плотности LEVEL_3 с помощью инструкции 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 );  

Е. Создание пространственного индекса для столбца типа geography

В следующем примере создается таблица с именем SpatialTable2, которая содержит столбец типа geography, geography_col. Затем для столбца SIndx_SpatialTable_geography_col1 создается пространственный индекс geography_col. В примере используются значения параметров по умолчанию для схемы тесселяции GEOGRAPHY_AUTO_GRID.

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

Примечание.

Для индексов географической сетки нельзя указать параметры ограничивающего прямоугольника.

F. Создание пространственного индекса для столбца типа geography

В следующем примере для столбца SIndx_SpatialTable_geography_col2 в таблице geography_col создается второй пространственный индекс, SpatialTable2. В качестве схемы тесселяции в примере задается GEOGRAPHY_GRID. В примере также назначаются различные плотности сетки на разных уровнях и 64 ячейки на объект. В примере также задается значение 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. Создание пространственного индекса для столбца типа geography

В следующем примере создается третий пространственный индекс, SIndx_SpatialTable_geography_col3, для столбца geography_col в таблице SpatialTable2. В примере используется схема тесселяции по умолчанию, GEOGRAPHY_GRID, и значение CELLS_PER_OBJECT по умолчанию (16).

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

См. также

ALTER INDEX (Transact-SQL)
Инструкция CREATE INDEX (Transact-SQL)
CREATE PARTITION FUNCTION (Transact-SQL)
CREATE PARTITION SCHEME (Transact-SQL)
CREATE STATISTICS (Transact-SQL)
CREATE TABLE (Transact-SQL)
Типы данных (Transact-SQL)
DBCC SHOW_STATISTICS (Transact-SQL)
DROP INDEX (Transact-SQL)
EVENTDATA (Transact-SQL)
sys.index_columns (Transact-SQL)
sys.indexes (Transact-SQL)
sys.spatial_index_tessellations (Transact-SQL)
sys.spatial_indexes (Transact-SQL)
Общие сведения о пространственных индексах