Spec-Zone.ru › MySQL 8.4

22.4.3.6 Создание и удаление индексов

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

Например, следующий запрос выполняется лучше с индексом по полю Population:

mysql-py> db.countryinfo.find("demographics.Population < 100")
...[output removed]
8 documents in set (0.00 sec)

Метод create_index() создает индекс, который вы можете определить с помощью JSON-документа, указывающего, какие поля использовать. Этот раздел представляет собой обзор индексирования на высоком уровне. Для получения дополнительной информации см. .

Добавление не уникального индекса

Чтобы создать не уникальный индекс, передайте имя индекса и информацию об индексе в метод create_index(). Повторные имена индексов запрещены.

В следующем примере задается индекс с именем popul, определенный по полю Population объекта demographics, индексируемому как Integer числовое значение. Последний параметр указывает, требуется ли для поля ограничение NOT NULL. Если значение false, поле может содержать NULL значения. Информация об индексе — это JSON-документ с подробностями одного или нескольких полей для включения в индекс. Каждое определение поля должно содержать полный путь к полю в документе и указать тип поля.

mysql-py> db.countryinfo.createIndex("popul", {fields:
[{field: '$.demographics.Population', type: 'INTEGER'}]})

Здесь индекс создается с использованием целочисленного числового значения. Доступны дополнительные параметры, включая параметры для использования с данными GeoJSON. Вы также можете указать тип индекса, который здесь опущен, так как тип по умолчанию “index” подходит.

Добавление уникального индекса

Чтобы создать уникальный индекс, передайте имя индекса, определение индекса и тип индекса “unique” методу create_index(). Этот пример демонстрирует уникальный индекс, созданный по имени страны ("Name"), что является еще одним распространенным полем в коллекции countryinfo для индексации. В описании поля индекса "TEXT(40)" представляет количество символов для индексации, а "required": True указывает, что поле должно присутствовать в документе.

mysql-py> db.countryinfo.create_index("name",
{"fields": [{"field": "$.Name", "type": "TEXT(40)", "required": True}], "unique": True})
Удаление индекса

Чтобы удалить индекс, передайте имя индекса, который нужно удалить, методу drop_index(). Например, вы можете удалить индекс “popul” следующим образом:

mysql-py> db.countryinfo.drop_index("popul")
Связанная информация
  • См. для получения дополнительной информации.

  • См. для получения дополнительной информации о JSON-документе, определяющем индекс.

  • См. для полного определения синтаксиса.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/mysql-shell-tutorial-python-documents-index.html

Spec-Zone.ru

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