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

Пространственные индексы используются с ST_Geometry и работают по-разному в зависимости от типа СУБД. ST_Geometry в Oracle и DB2 использует индекс пространственной сетки. Модуль IBM Informix Spatial DataBlade и реализация ST_Geometry в PostgreSQL и SQLite используют индекс R-tree для индексации пространственных данных. В SQLite индекс R-tree – это виртуальная таблица.

Вы можете создать пространственный индекс разными путями:

Помните, что когда вы выполняете запросы пространственных отношений к таблицам, содержащим столбцы 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 см. В разделе Пространственные индексы, создаваемые приложением DB2 Spatial Extender. О пространственных индексах в Informix см. раздел Пространственные индексы в базе геоданных Informix.

Связанные темы

5/25/2014