sql >> Base de Datos >  >> NoSQL >> MongoDB

En MongoDB, si un índice está en 3 campos, ¿podemos usar ese índice al consultar en 2 campos? (comodín en el tercer campo)

Esos son índices de árbol B, por lo que se pueden usar para un subconjunto de prefijos de las columnas involucradas. Si no tiene las columnas iniciales, una exploración de rango de índice (la operación para la que se utiliza principalmente un índice de árbol B) ya no es posible. Puede haber otras formas de seguir usando el índice (Oracle tiene escaneos completos rápidos y escaneos salteados, por ejemplo), pero por lo general, el índice no se usará.

Este razonamiento se aplica a todo lo que usa índices B-tree, base de datos relacional o no.

De nuevo, esto no depende del tipo de columna, sino del orden de las columnas en el índice. Debe tener las columnas iniciales (en su caso, necesita page_type). Si tiene muchas consultas sin page_type, considere volver a crear el índice con page_type como la última columna (lo que, por supuesto, también puede tener un impacto negativo en otras consultas). En general, necesita saber qué tipo de consultas ejecutará antes de poder diseñar los índices.