Доступно с лицензией Standard или Advanced.
ArcGIS использует индексы для быстрого поиска данных. Атрибутивные индексы используются для поиска записей, удовлетворяющих атрибутивному запросу, и пространственных индексов, использующихся для поиска объектов, удовлетворяющих пространственному запросу.
Атрибутивные индексы могут ускорить обработку запросов к соединениям и другим атрибутам таблиц, классов пространственных объектов, шейп-файлов или классов атрибутивных отношений. Атрибутивный индекс - это альтернативный путь, используемый ArcGIS для получения записи из таблицы. Для большинства типов атрибутивных запросов быстрее найти запись по индексу, чем начинать с первой записи и просматривать в таблице все записи подряд.
Как только вы загрузите ваши данные в существующую таблицу, класс пространственных объектов, шейп-файл или класс атрибутивных отношений, вы сможете создать индексы для тех полей, к которым вы часто производите запросы. В идеале вы хотите создать индексы для столбцов с уникальными или почти уникальными значениями. Создавайте только нужные индексы, поскольку при добавлении индексов несколько снижается скорость выполнения операции редактирования класса пространственных объектов. Каждый раз при редактировании класса пространственных объектов, содержащего атрибутивный индекс, ArcGIS или СУБД будут выполнять обслуживание индекса. Избегайте создания индекса для поля, которое часто редактируется, или для полей, содержащих очень мало различимых значений, таких как Yes или No, поскольку эти индексы могут быть контрпродуктивными для производительности.
Вы можете создать атрибутивные индексы в диалоговом окне Свойства в ArcGIS Pro или с помощью инструмента геообработки Добавить атрибутивный индекс. Как только индекс будет добавлен, вы сможете удалить его или добавить в любое удобное время.
Атрибутивные индексы могут быть созданы по-разному. Вы можете создать их для одного или нескольких полей; они могут быть уникальными и нет; в случае работы с некоторыми базами геоданных они могут быть также созданы по возрастанию или по убыванию. В данном документе приводится краткое описание этих понятий. Если вы хотите определить оптимальную технологию индексирования многопользовательской базы геоданных, то обратитесь к документации по вашей СУБД.
Создание атрибутивных индексов в ArcGIS Pro
Вы можете создать атрибутивный индекс для одного или нескольких полей в наборе данных, если щелкнете правой кнопкой на классе объектов базы геоданных или имени таблицы на панели Каталог и откроете диалоговое окно Свойства.
- На панели Каталог щелкните правой кнопкой мыши таблицу, класс объектов, шейп-файл или атрибутивный класс отношений, для которых вы хотите создать индекс, и выберите Свойства.
- Выберите вкладку Индексы.
В разделе Атрибутивный индекс отображаются существующие индексы для этого набора данных.
Примечание:
Индекс FDO_OBJECTID создается и используется базой геоданных для однозначной идентификации каждого объекта и не может быть удален. Если вы щелкните на FDO_OBJECTID, в секции Fields отобразится поле, для которого был создан этот индекс.
- Чтобы добавить новый атрибутивный индекс, щелкните Добавить.
- Для Имени введите имя для нового индекса.
- Дополнительно можно отметить Уникальный, если значения поля являются уникальными. Чтобы создать индекс по возрастанию, отметьтеВозрастающий.
Опции Уникальный и Возрастающий не используются в файловой базе геоданных, и вы можете оставить их невыбранными. Параметр Возрастающий не используется в Oracle или SQL Server.
- В списке Доступных полей выберите поле или поля, для которых вы хотите создать индекс.
Примечание:
Составные индексы (сразу на несколько столбцов) не поддерживаются в файловых базах геоданных.
- Нажмите кнопку стрелки вправо, чтобы перенести поле или поля в список Выбранные поля.
- Дополнительно, если было выбрано несколько полей, используйте стрелки вверх и вниз, чтобы изменить порядок полей в индексе.
- Щёлкните ОК, чтобы построить индекс.
- Щелкните OK, чтобы закрыть диалоговое окно Свойства.
Создание атрибутивных индексов с помощью геообработки
В группе инструментов Индексы в наборе инструментов Инструменты управления данными хранятся инструменты для создания и удаления атрибутивных индексов.
Инструмент Добавить атрибутивный индекс добавляет индекс для одного или нескольких столбцов существующей таблицы, класса пространственных объектов или класса отношений с атрибутами. Эта возможность доступна с любой лицензией ArcGIS, но может использоваться только с многопользовательскими базами данных, если имеется лицензия ArcGIS Desktop Standard или Advanced.
Инструмент Удалить атрибутивный индекс удаляет индекс для одного или нескольких столбцов существующей таблицы, класса пространственных объектов или класса отношений атрибутов. Данный инструмент будет также доступен во всех лицензиях ArcGIS.
Имена атрибутивных индексов
При вводе имени для индекса в многопользовательской базе геоданных рекомендуется дать индексу такое имя, которое будет соответствовать индексируемой таблице или даже полю. Однако, если имя индексируемой таблицы будет изменено, то ваш индекс уже не будет указывать на то, какую таблицу он индексирует. В некоторых организациях в имени индекса также указывается то, что это индекс, например, добавляя IDX в конце или в начале имени индекса. Например, индекс для таблицы адресов может иметь имя ADRS_APK_IDX, где ADRS будет указывать на то, что это индекс для таблицы адресов, APK означает имя столбца, которое было индексировано, а IDX означает, что это индекс.
Как и для имен таблиц, для имен индексов в базах геоданных имеются некоторые ограничения:
- Должны быть уникальными в базе данных
- Должны начинаться с буквы
- Не должны содержать пробелов
- Не должны содержать зарезервированных слов
В файловой базе геоданных нет никаких ограничений для имени атрибутивного индекса.
В ArcGIS длина имени атрибутивного индекса не должна превышать 16 символов. Это ограничение обусловлено требованиями к наименьшей допустимой длине имени в других базах данных и призвано упростить процесс переноса и совместного использования данных различными базами геоданных.
Уникальные индексы
При создании индекса вам предоставляется возможность сделать его уникальным. Выберите эту опцию, если в каждой строке этого столбца хранится уникальное значение. Это позволит ускорить скорость поиска атрибутивного значения, поскольку в базе данных поиск будет остановлен, как только будет найдено первое совпадающее значение.
Примечание:
Вы не сможете редактировать класс пространственных объектов, который хранится в наборе классов объектов вместе с другим классом пространственных объектов с уникальным индексом для созданного пользователем поля.
Примечание:
Параметр Уникальный не используется в файловых базах геоданных, и вы можете оставить ее невыбранной.
Индексы по возрастанию и по убыванию
При создании индекса вы сможете создать индекс по возрастанию и, если опция не будет выбрана, по убыванию. Возрастающий индекс поддерживается в формате по возрастанию. Например, значения названий городов Athens, Berlin, London и Paris будут отображены в этом алфавитном порядке в индексе по возрастанию, а в индексе по убыванию эти города будут записаны в обратном порядке – Paris, London, Berlin и Athens.
В большинстве случаев порядок записи в индексе почти не оказывает влияния на скорость обработки запросов, поскольку проход по индексу производится эффективно как по возрастанию, так и по убыванию.
Примечание:
Параметр Возрастающий не используется в Oracle, SQL Server и файловых базах геоданных, и его можно оставить не включенным.
Обычные и составные индексы
В файловых базах геоданных не поддерживаются составные индексы (сразу для нескольких столбцов). В диалоговом окне Свойства задать составной индекс нельзя. Инструмент Добавить атрибутивный индекс не позволяет задать составной индекс, и хотя созданный вами индекс будет выглядеть как составной в диалоговом окне Свойства на панели Каталог, на самом деле это будут отдельные индексы для каждого из полей.
Индексы в базе геоданных могут быть созданы как для одного, так и для нескольких столбцов. Составные индексы удобны, если вы часто указываете в запросе несколько полей вместе. В этом случае производительность обработки запроса с помощью составного индекса будет выше, чем при использовании двух или трех отдельных индексов для каждого поля.
Порядок, в котором поля отображаются в составном индексе, имеет большое значение. В составном индексе, в котором столбец A предшествует столбцу B, столбец A будет использован для управления первоначальным поиском. Кроме того, такой индекс будет более полезен для запросов, в которых используется только столбец A, чем для запросов, использующих только столбец B.
Существуют аргументы как в пользу создания простых и составных индексов или их комбинаций, так и против их создания. Наилучшее решение редко является очевидным. Довольно часто, однако, имеется несколько решений, которые подойдут. Например, если вы иногда производите запрос только к столбцу A и иногда только к столбцу B, а иногда к обоим столбцам, то вы могли бы:
- Создать два отдельных индекса для столбцов A и B.
- Создать составной индекс для столбцов A и B. Использование данного индекса будет несколько эффективнее при обработке запросов к данным из обоих столбцов. При выполнении запросов только к столбцу A, этот индекс будет обеспечивать меньшую скорость, чем отдельный индекс по столбцу A. Этот индекс будет мало использоваться в запросах, включающих только B. Зато вы можете создать дополнительный индекс для B.
- Создайте все три индекса: индекс для столбца A, индекс для столбца B и составной индекс для столбцов A и B. Это было бы эффективное решение, если все три типа запросов производятся одинаково часто, и запросы к таблице производятся чаще, чем редактирование ее данных.