Vorteil eines eindeutigen Index in MongoDB

8

Ich habe versucht, die Mongo-Dokumentation zu durchsuchen, kann aber keine Details darüber finden, ob Abfragen für eindeutige Indizes schneller sind als Abfragen für nicht eindeutige Indizes (mit denselben Daten).

Ich verstehe also, dass ein einzigartiger Index eine hohe Selektivität und gute Leistung haben wird. Aber würde ein nicht eindeutiger Verbundindex bei zwei Feldern, deren Verkettung eindeutig ist, langsamer ablaufen als ein einzigartiger Verbundindex?

Ich gehe davon aus, dass eindeutige Indizes Einfügungen verlangsamen können, da die Eindeutigkeit verifiziert werden muss. Aber lohnt sich die Verbesserung der Leseleistung eines eindeutigen Indexes, wenn überhaupt, wirklich?

    
Zaid Masud 10.09.2012, 11:36
quelle

3 Antworten

13

Ein schneller grep des Quellbaums scheint darauf hinzuweisen, dass eindeutige Indizes nur beim Einfügen verwendet werden. Daher sollte es zwischen keiner Abfrage, die ein Dokument zurückgibt, keinen Leistungsvorteil oder -nacht geben, ob der Index eindeutig ist oder nicht / p>

MongoDB-Indizes werden als btrees implementiert, so dass es keinen logischen Sinn ergibt, dass sie anders ausgeführt werden, egal ob der Index eindeutig ist oder nicht.

    
Chris Heald 10.09.2012, 11:51
quelle
1

Ich habe meine eigenen kleinen Forschungen zu diesem Thema gemacht. Ich generierte 500.000 Datensätze (zufällig generierte Strings) in einer Sammlung und probierte ein paar Abfragen mit der Anweisung explain () aus.

Dann stellte ich einen eindeutigen Index sicher und probierte noch einige andere Abfragen aus:

Wie Sie sehen können, ist nach dem Hinzufügen des Index der Zeitverbrauch von ~ 276ms auf 0ms gesunken! Es scheint also so, als ob der Index, auch wenn er eindeutig ist, die Suchabfragen (positiv) beeinflusst.

    
ecdeveloper 25.11.2013 13:08
quelle
-7

Ein eindeutiger Index oder eine eindeutige Einschränkung funktioniert genauso wie bei einem RDBMS. Die Eindeutigkeit wird zum Zeitpunkt des Einfügens überprüft, hat aber nichts mit der Leseleistung zu tun (warum sollte sie?). Warum stellst du diese Frage? Gibt es rationale Gründe für diese Frage? Hast du irgendwelche Leistungsbenchmarks gemacht? Hast du Probleme in der realen Welt? Verwenden Sie einen eindeutigen Index, wenn Sie einen Punkt benötigen. Jede weitere Diskussion ist wahrscheinlich sinnlos.

    
Andreas Jung 10.09.2012 11:46
quelle