22.3.3.6 Создание и удаление индексов
Индексы используются для быстрого поиска документов с определенными значениями полей. Без индекса MySQL должен начинать с первого документа и затем прочитать всю коллекцию, чтобы найти соответствующие поля. Чем больше коллекция, тем больше это стоит. Если коллекция большая, а запросы к определенному полю часты, следует рассмотреть создание индекса по определенному полю внутри документа.
Например, следующий запрос работает быстрее с индексом по полю Population:
mysql-js> db.countryinfo.find("demographics.Population < 100")
...[output removed]
8 documents in set (0.00 sec)
Метод createIndex() создает индекс, который можно определить с помощью JSON-документа, указывающего, какие поля использовать. Этот раздел — общее описание индексирования. Для получения более подробной информации см. .
Добавление не уникального индекса
Для создания не уникального индекса передайте имя индекса и информацию об индексе методу createIndex(). Повторные имена индексов запрещены.
В следующем примере указан индекс под названием popul, определенный по полю Population из объекта demographics, индексируемому как числовое значение Integer. Последний параметр указывает, требуется ли для поля ограничение NOT
NULL. Если значение равно false, поле может содержать значения NULL. Информация об индексе — это JSON-документ с подробностями одного или нескольких полей, которые нужно включить в индекс. Каждое определение поля должно включать полный путь к полю в документе и указать тип поля.
mysql-js> db.countryinfo.createIndex("popul", {fields:
[{field: '$.demographics.Population', type: 'INTEGER'}]})
Здесь индекс создается с использованием целого числового значения. Доступны дополнительные параметры, включая параметры для использования с данными GeoJSON. Также можно указать тип индекса, который здесь опущен, поскольку тип по умолчанию “index” подходит.
Добавление уникального индекса
Для создания уникального индекса передайте имя индекса, определение индекса и тип индекса “unique” методу createIndex(). Этот пример демонстрирует уникальный индекс, созданный по имени страны ("Name"), что является еще одним распространенным полем в коллекции countryinfo для индексирования. В описании поля индекса "TEXT(40)" представляет количество символов для индексирования, а "required": True указывает, что поле должно существовать в документе.
mysql-js> db.countryinfo.createIndex("name",
{"fields": [{"field": "$.Name", "type": "TEXT(40)", "required": true}], "unique": true})
Удаление индекса
Для удаления индекса передайте имя индекса, который нужно удалить, методу dropIndex(). Например, можно удалить индекс “popul” следующим образом:
mysql-js> db.countryinfo.dropIndex("popul")
Связанная информация
Для получения дополнительной информации см. .
Для получения дополнительной информации о JSON-документе, определяющем индекс, см. .
Полное определение синтаксиса см. в .
© 2025 Oracle
Licensed under the GPLv2 License.