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

Expressão regular do MongoDB com campo indexado


A razão para o diferencial de desempenho aqui é provavelmente que, com o índice ativado, sua consulta deve percorrer o índice (carregar na memória) e, em seguida, carregar os documentos correspondentes a serem retornados à memória também. Como você não está usando a consulta de prefixo, todos os valores no índice serão verificados e testados em relação à expressão regular. Não muito eficiente.

Quando você remove o índice, você está apenas fazendo uma varredura de tabela e combinando o regex lá - essencialmente, você simplificou as coisas do primeiro um pouco.

Você pode tornar a versão indexada mais rápida se for um consulta de índice coberto , provavelmente também seria mais rápido se fosse um índice composto e você precisasse combiná-lo com os critérios de outro campo.

Quando você usa uma consulta de prefixo, não é que ela use apenas um índice, mas você usa o índice com eficiência, o que é fundamental e, portanto, você vê os ganhos reais de desempenho.