Пространственные индексы используются с ST_Geometry и работают по-разному в зависимости от типа СУБД. ST_Geometry в Oracle и IBM Db2 использует индекс пространственной сетки. Модуль IBM Informix Spatial DataBlade и реализация ST_Geometry в PostgreSQL и SQLite используют индекс R-tree для индексации пространственных данных. В SQLite индекс R-tree является вирутальной таблицей.
Вы можете создать пространственный индекс следующими способами:
- Чтобы создать индексы пространственной сетки, щелкните Добавить на вкладке Индексы в окне Свойства класса пространственных объектов в ArcCatalog. См. Перестроение пространственного индекса.
- Использование SQL.
Помните, что когда вы выполняете запросы пространственных отношений к таблицам, содержащим столбцы ST_Geometry, они используют пространственный индекс для ускорения работы только при применении определенных функций пространственных отношений. Они указаны в разделе Когда используются пространственные индексы?.
Oracle
Классы объектов, которые используют хранение ST_Geometry, применяют отдельную таблицу для хранения информации о пространственном индексе. Таблица пространственного индекса называется S<n>_IDX$, где <n> – это значение индекса геометрии таблицы. Значение индекса геометрии хранится в системной таблице базы геоданных SDE.ST_GEOMETRY_COLUMNS. Таблица пространственного индекса создается как OracleIndexed Organized Table (IOT). Пространственный индекс атрибута ST_Geometry выглядит как A<n>_IX1, при просмотре из Oracle Enterprise Manager. Значение <n> соответствует LAYER_ID, хранящемуся в системной таблице базы геоданных LAYERS.
Два дополнительных индекса создаются в таблице S<n>_IDX$: S<n>$_IX1 и S<n>$_IX2. Можно задать способ хранения этих индексов в СУБД с помощью параметра S_STORAGE в ключевом слове конфигурации DBTUNE при создании класса объектов.
Если вы создаете разделяемую бизнес-таблицу, содержащую столбец ST_Geometry, желательно также использовать разделяемый пространственный индекс. Существуют два типа метода разделения: глобальный и локальный. По умолчанию в разделяемой бизнес-таблице создаются глобальные разделяемые индексы. Чтобы создать локальный индекс, необходимо добавить ключевое слово LOCAL в конце выражения CREATE INDEX. Чтобы разрешить ArcGIS добавить LOCAL в конце выражения CREATE INDEX, задайте параметру ST_INDEX_PARTITION_LOCAL значение TRUE под ключевым словом DEFAULTS.
PostgreSQL
В PostgreSQL индекс R-tree является встроенным с помощью инфраструктуры модуля Generalized Search Tree, GiST. Более подробная информация об индексировании GiST находится в документации PostgreSQL.
SQLite
Пространственный индекс в SQLite – это набора таблиц, использующийся в качестве индекса R-tree.
Db2 и Informix
Для получения более полной информации о пространственных индексах в Db2 и Informix, обратитесь к документации IBM.