CREATE SPATIAL INDEX (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Синтаксис

-- SQL Server Syntax

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

-- Windows Azure SQL Database Syntax 

CREATE SPATIAL INDEX index_name 
    ON <object> ( spatial_column_name ) 
    { 
      [ USING <geometry_grid_tessellation> ] 
          WITH ( <bounding_box> 
                [ [,] <tesselation_parameters> [,... n ] ] 
                [ [,] <spatial_index_option> [,... n ] ] ) 
     | [ USING <geography_grid_tessellation> ] 
          [ WITH ( [ <tesselation_parameters> [,... n ] ] 
                   [ [,] <spatial_index_option> [,... n ] ] ) ] 
    } 


[ ; ]

<object> ::=
{
    [database_name. [schema_name ] . | schema_name. ] 
                table_name 
}
 
<geometry_grid_tessellation> ::= 
{ GEOMETRY_GRID }
  
<bounding_box> ::= 
BOUNDING_BOX = ( {
        xmin, ymin, xmax, ymax 
   | <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate>, <named_bb_coordinate> 
  } ) 

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

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

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

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

<geography_grid_tessellation> ::= 
{ GEOGRAPHY_GRID }
  
<spatial_index_option> ::= 
{
    IGNORE_DUP_KEY = OFF
  | STATISTICS_NORECOMPUTE = { ON | OFF }
  | DROP_EXISTING = { ON | OFF }
  | ONLINE = OFF 
}

Аргументы

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

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

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

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

    Столбец типа данных

    Схема тесселяции

    geometry

    GEOMETRY_GRID

    geometry

    GEOMETRY_AUTO_GRID

    geography

    GEOGRAPY_GRID

    geography

    GEOGRAPHY_AUTO_GRID

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

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

  • ON filegroup_name

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

  • ON «по умолчанию»

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

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

<object>::=

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

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

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

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

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

ИСПОЛЬЗОВАНИЕ параметров

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

  • GEOMETRY_AUTO_GRID

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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

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

  • GEOGRAPHY_AUTO_GRID

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

    Может быть указан только для столбца данных типа 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
      Указывает наименьшую возможную плотность сетки на данном уровне. LOW соответствует 16 ячейкам (сетка 4x4).

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

    • HIGH.
      Указывает наибольшую возможную плотность сетки на данном уровне. 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 2008 по SQL Server 2014 включительно.

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

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

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

    Параметр PAD_INDEX имеет смысл только в случае, если указан параметр FILLFACTOR, так как использует процентное значение, указанное в нем. Если процент, заданный аргументом FILLFACTOR, недостаточно велик для размещения одной строки, компонент Компонент Database Engine внутренне переопределит это значение, чтобы обеспечить минимум. Количество строк на странице индекса промежуточного уровня никогда не бывает менее двух даже при самых малых значениях аргумента fillfactor.

  • FILLFACTOR =fillfactor

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Определяет величину в процентах, показывающую, насколько компонент Компонент Database Engine должен заполнять конечный уровень каждой страницы индекса во время его создания или перестроения. Значение fillfactor должно быть целым числом от 1 до 100. Значение по умолчанию — 0. Если параметр fillfactor равен 100 или 0, компонент Компонент Database Engine создает индексы с полностью заполненными страницами конечного уровня.

    Примечание

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

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

    Важное примечаниеВажно!

    Создание кластеризованного индекса с аргументом FILLFACTOR меньше 100 влияет на объем пространства хранения, занимаемого данными, т. к. компонент Компонент Database Engine перераспределяет данные, когда создает кластеризованный индекс.

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

  • SORT_IN_TEMPDB = { ON | OFF }

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

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

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

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

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

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

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

    • OFF
      Автоматическое обновление статистических данных включено.

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

    Важное примечаниеВажно!

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

  • DROP_EXISTING = { ON | OFF }

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

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

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

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

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

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

    Примечание

    Операции с индексами в сети доступны не во всех выпусках SQL Server.Перечень функций, поддерживаемых выпусками SQL Server, см. в разделе Функции, поддерживаемые различными выпусками SQL Server 2014.

  • ALLOW_ROW_LOCKS = { ON | OFF }

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

    • ON
      Блокировки строк допустимы при доступе к индексу. Компонент Компонент Database Engine определяет, когда используются блокировки строки.

    • OFF
      Блокировки строк не используются.

  • ALLOW_PAGE_LOCKS = { ON | OFF }

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

    • ON
      Блокировки страниц возможны при доступе к индексу. Компонент Компонент Database Engine определяет, когда используются блокировки страниц.

    • OFF
      Блокировки страниц не используются.

  • MAXDOP =max_degree_of_parallelism

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

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

    Важное примечаниеВажно!

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

    Аргумент max_degree_of_parallelism может иметь следующие значения.

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

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

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

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

    Примечание

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

  • DATA_COMPRESSION = {NONE | ROW | PAGE}

    Применимо для следующих объектов: С SQL Server 2012 по SQL Server 2014 включительно.

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

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

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

    • PAGE
      Используется сжатие страниц.

Замечания

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

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

Важное примечаниеВажно!

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

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

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

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

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

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

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

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

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

[ ON { filegroup_name | "значение_по_умолчанию" } ]

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

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

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

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

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

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

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

Разрешения

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

Примеры

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

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

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

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

В следующем примере для столбца geometry_col в таблице SpatialTable создается второй пространственный индекс, SIndx_SpatialTable_geometry_col2. В качестве схемы тесселяции в примере задается 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 );

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

Г.Изменение параметра для пространственных индексов

В следующем примере перестраивается пространственный индекс 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_col типа geography. Затем для столбца geography_col создается пространственный индекс SIndx_SpatialTable_geography_col1. В примере используются значения параметров по умолчанию для схемы тесселяции GEOGRAPHY_AUTO_GRID.

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

Примечание

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

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

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

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

Типы данных (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)

Основные понятия

Общие сведения о пространственных индексах

Общие сведения о пространственных индексах