MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Por que a direção do índice é importante no MongoDB?


O MongoDB concatena a chave composta de alguma forma e a usa como chave em um BTree.

Ao encontrar itens únicos - A ordem dos nós na árvore é irrelevante.

Se você estiver retornando um intervalo de nós - Os elementos próximos uns dos outros ficarão nos mesmos galhos da árvore. Quanto mais próximos os nós estiverem do intervalo, mais rápido eles poderão ser recuperados.

Com um índice de campo único - A ordem não importa. Se estiverem próximos em ordem crescente, também estarão próximos em ordem decrescente.

Quando você tem uma chave composta - A ordem começa a importar.

Por exemplo, se a chave for A ascendente B ascendente, o índice pode ser algo assim:
Row   A B
1     1 1
2     2 6
3     2 7 
4     3 4
5     3 5
6     3 6
7     5 1

Uma consulta para A ascendente B descendente precisará pular o índice fora de ordem para retornar as linhas e será mais lenta. Por exemplo, ele retornará a linha 1, 3, 2, 6, 5, 4, 7

Uma consulta de intervalo na mesma ordem que o índice simplesmente retornará as linhas sequencialmente na ordem correta.

Encontrar um registro em um BTree leva tempo O(Log(n)). Encontrar um intervalo de registros em ordem é apenas OLog(n) + k, onde k é o número de registros a serem retornados.

Se os registros estiverem fora de ordem, o custo pode ser tão alto quanto OLog(n) * k