прфексов индекса?
Допустим, я имею индекс { a: 1, b: 1, c: 1 }. Он будет иметь префиксы { a: 1 } и `{ a: 1, b: 1 }`и они могут быть задействованы в запросах, как если бы я их создал отдельно, правильно? То есть создание этих индексов отдельно можно рассматривать как дублирование индексов?
Второй вопрос: если префикс { a: 1, b: 1 } может задействоваться при запросе, можно ли в таком случае перебирать коллекции в обоих направлениях, если a используется в фильтре, а b для сортировки? db.collection.find({ a: 'test' }).sort({ b: 1 }) и db.collection.find({ a: 'test' }).sort({ b: -1 }).
Все верно по логике. Но надо помнить что компаунд индексы могут достаточно большие и их задействование может не происходить если дешевле просто пробежаться по коллекции даже без использования индексов. Так что всеода используйте explain для понимания того как будет в реально сти выглядеть план выполнения запроса
еще сталкивался с прецедентом на большой шардированной коллекции... Там не уехало на другой шард часть данных, и это все выглядело как 15, 16, 17, 32, 33, 34, 35, 36, 37, 38, ....... то есть значения 15, 16, 17 должны были уехать на другой шард. Но не уехали. И это провоцировало коллскан, а не использование индекса.
Обсуждают сегодня