почему индексирование применяется к определенному столбцу, а не к каждому столбцу по умолчанию? - PullRequest
0 голосов
/ 19 сентября 2018

Я читал об индексации в БД, но я не понимаю, почему нам нужно указывать индекс для определенного столбца, если он ускоряет поиск, почему он не по умолчанию для всех столбцов?Можно ли создать несколько индексов в одной таблице?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Для возобновления:

Использование индексов улучшает производительность запроса на чтение, поскольку mongodb не читает всю коллекцию при поиске документов.Это также улучшает сортировку.

Но эти улучшения имеют свою стоимость:

  • Индексы используют пространство диска / памяти.
  • Операции удаления, вставки и обновления будут более продолжительными:При каждой операции вставки, удаления или обновления mongodb должен обновлять все соответствующие индексы.
  • Существует несколько типов индексов, и некоторые из них (составной индекс, т. е.) могут иметь множество комбинаций

По этим причинам (но не только) по умолчанию при создании коллекции создается только индекс для поля _id (поскольку он должен быть уникальным).

0 голосов
/ 19 сентября 2018

Если нет n нет.индексов и когда вы выполняете любую операцию сохранения / обновления, которая изменяет ключи, она делает это n раз, следовательно, создает чрезмерную блокировку записи.Когда вы выполните такую ​​операцию, вы заметите, что чтение будет выполняться без индексов быстрее, чем при попытке обновления согласованно со слишком большим количеством индексов.Таким образом, для выполнения индексирования вы должны отслеживать индексы, иначе возникнет большая проблема с производительностью (ради оперативной памяти и блокировки записи).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...