Атрибутивные индексы в базе геоданных

ArcGIS использует индексы для быстрого поиска данных. Атрибутивные индексы используются для поиска записей, удовлетворяющих атрибутивному запросу, и пространственных индексов, использующихся для поиска объектов, удовлетворяющих пространственному запросу.

Атрибутивные индексы могут ускорить обработку запросов к соединениям и другим атрибутам таблиц, классов пространственных объектов, шейп-файлов или классов атрибутивных отношений. Атрибутивный индекс - это альтернативный путь, используемый ArcGIS для получения записи из таблицы. Для большинства типов атрибутивных запросов быстрее найти запись по индексу, чем начинать с первой записи и просматривать в таблице все записи подряд.

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

Добавление каждого индекса несколько снижается скорость выполнения операции редактирования класса пространственных объектов или таблицы. Каждый раз при редактировании класса пространственных объектов или таблицы, содержащих атрибутивный индекс, ArcGIS или СУБД будут выполнять обновление индекса. Избегайте создания индекса для столбца, который редактируется чаще, чем к нему обращаются запросы, или для столбцов, содержащих очень мало различимых значений, поскольку эти индексы могут быть контрпродуктивными для производительности. Например, создание индекса для столбца, содержащего только значения Да или Нет, не улучшит производительность запроса.

Вы можете создавать атрибутивные индексы из диалогового окна Свойства в ArcGIS Pro или использовать инструмент геообработки Добавить атрибутивный индекс. Как только индекс добавлен, вы сможете удалить его или добавить снова в любое удобное время.

Вы можете создать атрибутивные индексы для одного или нескольких полей столбцов; они могут быть уникальными и нет, в случае работы с некоторыми базами геоданных они могут быть также созданы по возрастанию или по убыванию. В данном разделе справки приводится краткое описание этих понятий. Если вы хотите определить оптимальную технологию индексирования многопользовательской базы геоданных, то обратитесь к документации по вашей СУБД.

Создается атрибутивный индекс на панели Каталог.

Вы можете создать атрибутивные индексы для одного или нескольких столбцов в таблице, классе пространственных объектов, шейп-файле или атрибутивном классе отношений, щелкнув правой кнопкой мыши его имя на панели Каталог и открыв диалоговое окно Свойства.

Примечание:

Если вы откроете таблицу атрибутов в ArcGIS Pro, рядом с именем индексируемых столбцов будут видны звездочки (*).

  1. На панели Каталог щелкните правой кнопкой мыши таблицу, класс объектов, шейп-файл или атрибутивный класс отношений, для которых вы хотите создать индекс, и щелкните Свойства.
  2. Перейдите на вкладку Индексы.

    В разделе Атрибутивный индекс отображаются существующие индексы для этого набора данных.

    Примечание:

    Когда вы создаете таблицу или класс пространственных объектов в ArcGIS, ArcGIS добавляет уникальный индекс в столбец идентификатора объекта. Индекс именуется FDO_OBJECTID в файловых базах геоданных и мобильных базах геоданных. В многопользовательских базах геоданных индекс называется r_#_sde_rowid_uk. Индекс используется базой геоданных для однозначной идентификации каждого объекта или строки и не может быть удален.

  3. Чтобы добавить атрибутивный индекс, щелкните Добавить.
  4. Для Имени введите имя для нового индекса.
  5. Дополнительно можно отметить Уникальный, если значения поля являются уникальными. Чтобы создать индекс по возрастанию, отметьтеВозрастающий.

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

  6. В списке Доступные поля щелкните столбец, для которого вы хотите построить этот индекс, и щелкните стрелку, чтобы переместить столбец в список Выбранные поля.

    Чтобы применить индекс к нескольким столбцам, повторите этот шаг для каждого столбца, который необходимо индексировать.

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

    См. раздел Обычные или составные индексы ниже для получения информации об определении порядка использования.

  8. Щёлкните ОК, чтобы построить индекс.
  9. Щелкните OK, чтобы закрыть диалоговое окно Свойства.

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

В группе инструментов Индексы набор инструментов Управление данными предоставляет два инструмента атрибутивных индексов: один для создания атрибутивного индекса и один для удаления атрибутивного индекса.

Группа инструментов Индексы набора инструментов Управление данными

Инструмент Добавить атрибутивный индекс добавляет индекс для одного или нескольких столбцов существующей таблицы, класса пространственных объектов или класса отношений с атрибутами.

Инструмент Удалить атрибутивный индекс удаляет индекс для одного или нескольких столбцов таблицы, класса пространственных объектов или класса отношений атрибутов.

Имена атрибутивных индексов

При вводе имени индекса рекомендуется дать индексу осмысленное имя, которое будет отражать, какую таблицу или какой столбец он индексирует. Однако, если имя индексируемой таблицы будет изменено, то ваш индекс уже не будет указывать на то, какую таблицу он индексирует. В некоторых организациях в имени индекса также указывается то, что это индекс, например, добавляя IDX в конце или в начале имени индекса. Например, индекс для таблицы адресов может иметь имя ADRS_APK_IDX, где ADRS указывает на то, что это индекс для таблицы адресов, APK означает имя столбца, который был проиндексирован, а IDX означает, что это индекс.

Как и для имен таблиц, для имен индексов в базах геоданных имеются некоторые ограничения:

  • Должны быть уникальными в базе данных
  • Должны начинаться с буквы
  • Не должны содержать пробелов
  • Не должны содержать зарезервированных слов

В файловой базе геоданных нет никаких ограничений для имени атрибутивного индекса.

В ArcGIS имя атрибутивного индекса не должно превышать 16 символов.

Уникальные индексы

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

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

Примечание:

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

Индексы по возрастанию или по убыванию

Когда вы создаете индекс, вы можете создать индекс как по возрастанию, так и по убыванию. Возрастающий индекс поддерживается в формате по возрастанию. Например, значения названий городов Athens, Berlin, London и Paris будут отображены в этом алфавитном порядке в индексе по возрастанию, а в индексе по убыванию эти города будут записаны в обратном порядке – Paris, London, Berlin и Athens.

В большинстве случаев порядок записи в индексе почти не оказывает влияния на скорость обработки запросов, поскольку проход по индексу производится эффективно как по возрастанию, так и по убыванию.

Обычные или составные индексы

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

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

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

Если вы иногда производите запрос только к столбцу A и иногда только к столбцу B, а иногда к обоим столбцам, то вы могли бы:

  • Создать два отдельных индекса для столбцов A и B.
  • Создать составной индекс для столбцов A и B. Использование данного индекса будет несколько эффективнее при обработке запросов к данным из обоих столбцов. При выполнении запросов только к столбцу A, этот индекс будет обеспечивать меньшую скорость, чем отдельный индекс по столбцу A. Этот индекс будет мало использоваться в запросах, включающих только B. Зато вы можете создать дополнительный индекс для B.
  • Создайте все три индекса - индекс для столбца A, индекс для столбца B и составной индекс для столбцов A и B. Это было бы эффективное решение, если все три типа запросов производятся одинаково часто, и запросы к таблице производятся чаще, чем редактирование ее данных.