Database Reference
In-Depth Information
Wir wollen einen B-Tree-Index für das
display
-Feld erzeugen. Doch zuerst
wollen wir überprüfen, ob der Index die Geschwindigkeit tatsächlich erhöht.
Zu diesem Zweck sehen wir uns zuerst eine Query ohne Index an. Die Me-
thode
explain
wird genutzt, um die Details einer Operation auszugeben.
db.phones.find({display:
"+1 800-5650001"
}).explain()
{
"cursor"
:
"BasicCursor"
,
"nscanned"
: 109999,
"nscannedObjects"
: 109999,
"n"
:1,
"millis"
: 52,
"indexBounds"
:{
}
}
Ihre Ausgabe wird nicht unserer Ausgabe entsprechen, doch beachten Sie
das
millis
-Feld - die zur Verarbeitung der Query benötigte Zeit in Millise-
kunden - , in dem Sie üblicherweise einen zweistelligen Wert finden.
Wir erzeugen einen Index, indem wir
ensureIndex(felder,optionen)
für die
Collection aufrufen. Der Parameter
felder
ist ein Objekt, das die zu indexie-
renden Felder enthält. Der
optionen
-Parameter beschreibt den Typ des zu
erzeugenden Indizes. In unserem Beispiel bauen wir einen eindeutigen Index
für
display
auf, bei dem Duplikate einfach aussortiert werden sollen.
db.phones.ensureIndex(
{ display : 1 },
{ unique : true, dropDups : true }
)
Nun lassen wir
find
erneut laufen und überprüfen mit
explain
, ob sich die
Situation verbessert hat.
db.phones.find({ display:
"+1 800-5650001"
}).explain()
{
"cursor"
:
"BtreeCursor display
_
1"
,
"nscanned"
:1,
"nscannedObjects"
:1,
"n"
:1,
"millis"
:0,
"indexBounds"
:{
"display"
:[
[
"+1 800-5650001"
,
"+1 800-5650001"
]
]
}
}