@source2003

Что такое индексы в Mongodb?

Подскажите пожалуйста, что такое индексы в mongodb, что происходит, когда мы их объявляем, почему поиск с сортировкой после этого работает быстрее? Можно ли объявлять много индексов в коллекции?
  • Вопрос задан
  • 6895 просмотров
Решения вопроса 1
Wolfnsex
@Wolfnsex
Если не хочешь быть первым - не вставай в очередь!
Индексы в MongoDB, представляю собой, в целом, то же самое, что и индексы в другой базе данных. Вместо перебора большой коллекции целиком, мы перебираем индекс, который гораздо проще запихать в память и работать с ним. Помимо прочего, индексы в отличии от самих данных, более нормализованы для поиска/сравнения значений.

Тут про индексы PostgreSQL, но аналогичным же образом, индексы работают во всех БД, с которыми приходилось работать мне.

После того, как поймете общее назначение индексов, можно будет легко найти интересующую Вас информацию по конкретному типу индексов в конкретной БД.

что происходит, когда мы их объявляем

Происходит чтение коллекции и построения индекса. Обычно, в физическом виде, это файл (или несколько файлов) на жестком диске.

Можно ли объявлять много индексов в коллекции?

Можно, но чем больше индексов - тем больше данные будут занимать на диске.

В идеале, под индекс попадают те данные, с которыми Вы работаете непосредственно, например, "логин" пользователя в таблице/коллекции пользователей, т.к. именно по нему происходит поиск. Все остальные данные, за пределами индекса, например, имя_пользователя, пароль, его телефон и т.д. - просто прилагаются "до кучи", в виде не индексированных данных, т.к. по ним либо не осуществляется поиск, либо, осуществляется довольно редко.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@askhat
Индексы в Монге — тоже что и вдругих БД — упорядоченное поле.

Почему по ним проще искать? Возьмите две колоды карт, в одной пусть карты идут масть к масти по порядку, а другую растасуйте. Возьмите секундомер и попросите двух друзей найти даму треф, каждый в своей колоде. Результатами поделитесь в комментариях.

Много индексов конечно вам никто не запретит, сначала даже кажется что это самое логичное. Но потом вы заметите, что при удалении/добавлении элементов в коллекции, надо перестраивать индексы, а это довольно ресурсоёмкая операция. Так что индексы нужны только там, где вы действительно часто ищете.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы