Доброго дня Подскажите пожалуйста Использую составной индекс, к примеру из 5 полей,

но при выборке, какие-то поля могут отсутствовать (1-е всегда будет, остальные 4 по ситуации, порядок полей в запросе известен)
Прочитал много инфы, но так к верному решению и не пришел...
При выборке главное наличие 1-го поля, что бы индекс использовался (он у меня как раз всегда есть), а дальше, если отсутствует к примеру 3-е поле, то индекс так же будет использоваться? Просто выборка будет последовательно по 1, 2, 4 и 5 полю, без 3-го, либо только по 1 и 2, а поскольку 3-го нет, то и до 4-5 не дойдет?

9 ответов

55 просмотров

составной поможет только при порядке тех полей что в нем, то есть для индекса a:1 b:1 c:1 d:1 будет ускорен только поиск: - a - a, b - a, b, c - a , b, c, d порядок важен, запрос типа find({b: 1, a:2}) не будет ускорен

Артемий-Устинов Автор вопроса
Алексей
составной поможет только при порядке тех полей что...

т.е. если индекс a:1 b:1 c:1 d:1 а запрос у меня find({a: 1, c:2, d:1}) (без b), индекс не будет нормально отрабатывать и для такого запроса потребуется индекс типа a:1 c:1 d:1

Алексей
составной поможет только при порядке тех полей что...

порядок появления ключей в запросе не имеет значения, даже хз откуда эта информация у вас. А вот порядок ключей сортировки как раз влияет на факт участия индекса

Артемий Устинов
т.е. если индекс a:1 b:1 c:1 d:1 а запрос у меня ...

скорее всего будет быстрее чем без индекса. Так же можно немного хитрить и в услвоие выборки указывать явно поле b но указывать ему для значения границы через $gt/$lt таким образом подталкивая планировщик использовать конкретный индекс индекс из этих четырех полей

Артемий-Устинов Автор вопроса
Nick
скорее всего будет быстрее чем без индекса. Так же...

интересная хитрость но немного не понял с реализацией т.е. если какое-то поле отсутствует, мы все равно дописываем его в запрос, но без конкретного значения, но это как сделать

Артемий Устинов
интересная хитрость но немного не понял с реализац...

db.getCollection('t_1').find({ a: 1, b: {$gte: MinKey}, b: {$lte: MaxKey}, c: 3 }).explain() хотя по идее достаточно либо мин либо макс, т.к. полностью покрывает Сейчас поигравшись кажется что всетаки это не очень идея и требует проверки на большом объеме данных а не на паре доков как у меня. Так что считайте рекомендацию сомнительной)

Nick
db.getCollection('t_1').find({ a: 1, b: {$...

Не всегда это хорошая идея. Если большой объём выборки, то работает медленнее.

Viktar
Не всегда это хорошая идея. Если большой объём выб...

вот и я об этом подумал, что форсировать индекс может быть плохой идеей и планировщику виднее

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

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
2
Привет!) Кто как юзает переменные в строках?) Чисто ради интереса Вот так: echo "У меня {$bananasAmount} бананов"; Или вот так: echo "У меня ${bananasAmount} бананов";
Виталий
3
разработчик ботов скидывает портфолио, боты которые он уже создал. А вот как узнать что это именно он их создал?
Gosudar
4
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
кто-нибудь уже пробовал это?
Lencore
4
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
❓ Подскажите как сделать в группе телеги функцию (кнопку) пересылки сообщения где есть нарушение правил? Бот к каждому сообщению (по определенным ключам) добавляет снизу кнопк...
Alexander
4
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Карта сайта