MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Espressione regolare MongoDB con campo indicizzato

Il motivo del differenziale di prestazioni qui è probabile che, con l'indice abilitato, la query deve attraversare l'indice (caricare in memoria), quindi caricare anche i documenti corrispondenti da restituire in memoria. Poiché non si utilizza la query del prefisso, tutti i valori nell'indice verranno scansionati e testati rispetto all'espressione regolare. Non molto efficiente.

Quando rimuovi l'indice, stai solo eseguendo una scansione della tabella e abbinando l'espressione regolare lì - essenzialmente hai semplificato leggermente le cose dal primo.

Potresti essere in grado di rendere la versione indicizzata più veloce se fosse un query sull'indice coperto , sarebbe anche più veloce se si trattasse di un indice composto e tu dovessi combinarlo con i criteri per un altro campo.

Quando utilizzi una query di prefisso, non è che utilizzi solo un indice, ma utilizzi l'indice in modo efficiente, che è la chiave, e quindi vedi i reali miglioramenti delle prestazioni.