sql >> Database >  >> NoSQL >> MongoDB

Als een index in MongoDB op 3 velden staat, kunnen we die index dan gebruiken bij het opvragen van 2 velden? (wildcard op het 3e veld)

Dat zijn B-tree-indexen, dus ze kunnen worden gebruikt voor een prefix-subset van de betrokken kolommen. Als u de leidende kolommen niet hebt, is een indexbereikscan (de bewerking waarvoor een B-tree-index voornamelijk wordt gebruikt) niet meer mogelijk. Er kunnen andere manieren zijn om de index nog steeds te gebruiken (Oracle heeft bijvoorbeeld snelle volledige scans en scans overslaan), maar meestal wordt de index niet gebruikt.

Deze redenering is van toepassing op alles dat B-tree-indexen gebruikt, relationele DB of niet.

Nogmaals, dit is niet afhankelijk van het type kolom, maar van de volgorde van kolommen in de index. U moet de leidende kolommen hebben (in uw geval heeft u page_type nodig). Als je veel zoekopdrachten hebt zonder het paginatype, overweeg dan om de index opnieuw te maken met paginatype als laatste kolom (wat natuurlijk ook een negatief effect kan hebben op andere zoekopdrachten). Over het algemeen moet u weten wat voor soort query's u uitvoert voordat u de indexen kunt ontwerpen.




  1. Hoe mongoDB ISODate naar string in mongoDB te converteren?

  2. Hoe Redis draaiend te krijgen op Azure?

  3. MongoDB:Tellen hoeveel items met een bepaalde waarde er in een array zijn, dat is in een document?

  4. Mongoose met unieke boolean van true