Что такое индексы в Mongodb?
Индексы в MongoDB, представляю собой, в целом, то же самое, что и индексы в другой базе данных. Вместо перебора большой коллекции целиком, мы перебираем индекс, который гораздо проще запихать в память и работать с ним. Помимо прочего, индексы в отличии от самих данных, более нормализованы для поиска/сравнения значений. Тут про индексы PostgreSQL, но аналогичным же образом, индексы работают во всех БД, с которыми приходилось работать мне.
После того, как поймете общее назначение индексов, можно будет легко найти интересующую Вас информацию по конкретному типу индексов в конкретной БД.что происходит, когда мы их объявляем
Происходит чтение коллекции и построения индекса. Обычно, в физическом виде, это файл (или несколько файлов) на жестком диске.Можно ли объявлять много индексов в коллекции?
Можно, но чем больше индексов - тем больше данные будут занимать на диске.
В идеале, под индекс попадают те данные, с которыми Вы работаете непосредственно, например, "логин" пользователя в таблице/коллекции пользователей, т.к. именно по нему происходит поиск. Все остальные данные, за пределами индекса, например, имя_пользователя, пароль, его телефон и т.д. - просто прилагаются "до кучи", в виде не индексированных данных, т.к. по ним либо не осуществляется поиск, либо, осуществляется довольно редко.
Индексы в Монге — тоже что и вдругих БД — упорядоченное поле.
Почему по ним проще искать? Возьмите две колоды карт, в одной пусть карты идут масть к масти по порядку, а другую растасуйте. Возьмите секундомер и попросите двух друзей найти даму треф, каждый в своей колоде. Результатами поделитесь в комментариях.
Много индексов конечно вам никто не запретит, сначала даже кажется что это самое логичное. Но потом вы заметите, что при удалении/добавлении элементов в коллекции, надо перестраивать индексы, а это довольно ресурсоёмкая операция. Так что индексы нужны только там, где вы действительно часто ищете.