Was ist besser: Lesezeichen / Key Lookup oder Index Scan

Ich weiß, dass ein Index sucht ist besser als ein Index- Scan , aber was ist vorzuziehen in SQL server erklären Pläne: Index suchen oder Key Lookup (Bookmark in SQL server 2000)?

Bitte sag mir, dass sie den Namen nicht erneut für SQL server 2008 geändert haben …

Index suche jedes Mal.

Lookups sind teuer, also deckt es Indizes ab und vor allem die INCLUDE-Klausel wurde hinzugefügt, um sie besser zu machen.

Sagen, dass, wenn Sie genau eine Zeile erwarten, zum Beispiel, ein Suchlauf verfolgt eine search kann besser sein als zu versuchen, eine Abfrage zu decken. Wir verlassen uns darauf, einen anderen Index in bestimmten Situationen zu vermeiden.

Bearbeiten: Einfacher Sprechartikel: Verwenden von Abdeckungsindizes zur Verbesserung der Abfrageleistung

Bearbeiten, Aug 2012

Lookups passieren pro Zeile , weshalb sie schlecht skalieren. Schließlich wählt der Optimierer einen gruppierten Index-Scan anstelle eines searchns + Lookup, weil es effizienter als viele Lookups ist.

Key-Lookup ist sehr ähnlich zu einem gruppierten Index-search (vor 2005 SP2 wurde 'search nach Lookup'). Ich denke, der einzige Unterschied ist, dass der Key Lookup ein zusätzliches PRE-FETCH-Argument angeben kann, das die Ausführungs-Engine anweist, um weitere Schlüssel im Cluster vorzubereiten (dh einen geclusterten Indexsuchlauf, gefolgt von Scan).

Ein Key Lookup zu sehen, sollte dich nicht erschrecken. Ist der normale Operator in Nested Loops verwendet und Nested Loops ist der Run-of-the-Mill Join Operator. Wenn du einen Plan verbessern willst, versuchst du, den Join zu verbessern und zu sehen, ob er stattdessen einen Merge-Join verwenden kann (dh beide Seiten von Join können Zeilen auf derselben Key Order, schnellste Join) oder eine Hash-Join (genug haben Gedächtnis für das QO, um einen Hash-Join zu betrachten oder die Kardinalität zu reduzieren, indem er Zeilen vor der Verknüpfung anstatt nachher filtert).

Diese SO-Frage erwähnt, dass Key-Lookups etwas zu vermeiden sind. Ein Index sucht wird definitiv die bessere Ausführung sein.