из 2 полей: a и b
index 2. и индекс по 3 полю: с
агрегация
match при поиске по a и b
match по полю c
Используется только индекс 1?
Вопрос в том, что искать по полю c на долгое время - не было нужды, тут вдруг захотели искать по 3 полям. Чтоб не перестраивать индекс 1 (да и по нему чаще будет поиск чем по 3 полям), добавили по полю c. В надежде что монга, найдет документы по a и b и в них с использованием индекса по c - быстро вернет. Но судя по explain - индекс по c - не используется
скорее всего планировщик не видит смысла в использовании индекса 2, т.к. его селективность ниже уже использованного индекса 1, а делать кроссмерж выборку по двум индексам еще дороже по операциям и затратам на диски.
А как себя будет вести планировщик, при наличии индекса по 3 полям и по 2 полям. То есть индекс 1 оставляем, и строим идекс по полям a b c. Если нужно будет искать по тройке значений. Будет ли в одних случаях использваоться индекс 1 а в других индекс 2
выберет индекс с большей селективностью, т.е. тот в котором ест ьвсе три поля если указаны все три в запросе
Обсуждают сегодня