Dit komt er eigenlijk op neer dat 10 indexen van maat N efficiënter zijn dan één index van maat N * 10. Als je puur naar reads kijkt, dan zouden de afzonderlijke indexen altijd sneller moeten zijn. De bijbehorende b-tree-wandelingen onderzoeken een kleinere toetsenset enz.
Er zijn echter een paar punten om te overwegen:
- Indexen op array-velden indexeren in principe elk array-element afzonderlijk. Als zodanig zal de overhead van het opzoeken maximaal 1-2 extra stappen zijn tijdens de b-tree-wandeling, wat een verwaarloosbare prestatiehit is. Met andere woorden, ze zullen bijna net zo snel zijn.
- Het hebben van 10 indexen kan betekenen dat voor elke update/insert meer dan één index moet worden bijgewerkt (afhankelijk van of uw indexen een veld delen of dat u meer dan 1 tijdstempel tegelijk bijwerkt). Dit is een belangrijke prestatieoverweging.
- Het gebruik van een array-index maakt het een beetje makkelijker om extra tijdstempels toe te voegen (bijv. Timestamp10).
- Er is een limiet aan het aantal naamruimten dat u per database kunt gebruiken (24k) en elke index neemt er één in beslag. Als je een aparte index per veld maakt, kan dit een probleem worden.
- Het belangrijkste is dat de array-index veel eenvoudiger is en uw code en dus onderhoudbaarheid vereenvoudigt. Gezien de beperkte prestatieverschillen zou ik zeggen dat dit de sterkste motivatie is om hier voor een array-index te gaan.