Пространственные индексы и ST_Geometry
Пространственные индексы используются с ST_Geometry и работают по-разному в зависимости от типа СУБД. ST_Geometry в Oracle и DB2 использует индекс пространственной сетки. Модуль IBM Informix Spatial DataBlade и реализация ST_Geometry в PostgreSQL и SQLite используют индекс R-tree для индексации пространственных данных. В SQLite индекс R-tree – это виртуальная таблица.
Вы можете создать пространственный индекс разными путями:
- Чтобы создать индексы пространственной сетки, щелкните Добавить (Add) на закладке Индексы (Indexes) в окне Свойства класса пространственных объектов (Feature Class Properties) в ArcCatalog. См. Установка пространственных индексов.
- Использовать SQL. См. Создание пространственных индексов для таблиц со столбцом ST_Geometry с помощью SQL.
- Если класс пространственных объектов находится в базе геоданных, вы можете использовать утилиту администрирования sdelayer. См. в Руководство по командам администрирования ArcSDE.
- Если класс пространственных объектов находится в базе геоданных, вы, кроме того, можете переключиться с режима загрузки обратно в нормальный режим, используя команду sdelayer с операциями load_only_io и normal_io. Если класс пространственных объектов переключен из режима LOAD_ONLY_IO в режим NORMAL_IO, пространственный индекс удаляется и создается заново.
Помните, что когда вы выполняете запросы пространственных отношений к таблицам, содержащим столбцы 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.