Spec-Zone.ru › MySQL 9.2

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.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/mysql-shell-tutorial-javascript-indexes-create.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API