Пространственные индексы используются с ST_Geometry и работают по-разному в зависимости от типа СУБД. ST_Geometry в Oracle и DB2 использует индекс пространственной сетки. Модуль IBM Informix Spatial DataBlade и реализация ST_Geometry в PostgreSQL и SQLite используют индекс R-tree для индексации пространственных данных. В SQLite индекс R-tree – это виртуальная таблица.
Вы можете создать пространственный индекс следующими способами:
- Чтобы создать индексы пространственной сетки, щелкните Добавить на вкладке Индексы в окне Свойства класса пространственных объектов в ArcCatalog. См. Перестроение пространственного индекса.
- Использование SQL.
Помните, что когда вы выполняете запросы пространственных отношений к таблицам, содержащим столбцы ST_Geometry, они используют пространственный индекс для ускорения работы только при применении определенных функций пространственных отношений. Они указаны в разделе Когда используются пространственные индексы?.
Oracle
Классы пространственных объектов, созданные с помощью ST_Geometry с пространственным индексом, создают дополнительную таблицу в базе данных Oracle. Таблица пространственного индекса называется S<n>_IDX$, где <n> – это значение индекса геометрии таблицы. Значение может быть получено с помощью запроса к таблице SDE.ST_GEOMETRY_COLUMNS. Таблица пространственного индекса создается как Oracle Indexed Organized Table (IOT). Пространственный индекс атрибута ST_Geometry выглядит как A<n>_IX1, при просмотре из 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.
IBM DB2 и Informix
Для получения более полной информации о пространственных индексах в DB2 и Informix, обратитесь к документации IBM.