@source2003

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

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

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

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

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

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

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

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

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

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

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

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

Войти через центр авторизации
Похожие вопросы