Wann ist ein vollständiger Tabellenscan besser als ein Indexscan?


7

In welchen Szenarien (in SQL Server) ist ein vollständiger Tabellenscan besser als ein Indexscan?


Ein vollständiger Tabellenscan kann nur auf einem Heap durchgeführt werden.
Martin Smith

@Martin - Ich würde einen Clustered-Index-Scan als "vollständigen Tabellenscan" betrachten, und diese passieren häufig. :)
Nick Chammas

Antworten:


7

Wenn die Selektivität von Datensätzen sehr hoch ist, ist der vollständige Tabellenscan immer besser als der Indexscan.

http://www.techipost.com/single-index-versus-full-table-scan/

Bearbeiten von gbn:

Beispielsweise kann der Optimierer entscheiden, dass es einfacher ist, die Tabelle / den Clustered-Index zu scannen, wenn viele Schlüsselsuchen erforderlich wären (z. B. nicht gruppierter Index zu gruppierten Indizes für nicht wichtige Daten).

Oder Sie haben nicht viele unterschiedliche Werte in den indizierten Spalten


gutes Beispiel. Alle übrigen Antworten sagen dasselbe

Diese Seite ist nicht mehr online, aber hier ist ein weiterer nützlicher Link: percona.com/blog/2012/11/23/…
B Seven

11

Wenn die

  • Tisch ist klein genug, es gibt keinen praktischen Unterschied
  • statistisch gesehen würden Sie die meisten Zeilen sowieso zurückgeben

Der 2. Fall muss qualifiziert werden

  • Ein Index-Scan ersetzt eine Indexsuche, wenn ein Index abdeckt
  • Eine Indexsuche oder ein Indexscan mit vielen Zeilen, für die Schlüssel- / Lesezeichensuche erforderlich ist, ist teuer und ein Tabellenscan könnte besser sein

Schließlich

  • Ein Index-Scan und ein Tabellenscan sind für Clustered-Indizes ziemlich gleich

6

Ist der Tisch

  • ist sehr klein
  • Die Kosten für einen Index-Scan und eine Reihe von Lesezeichen-Suchvorgängen in der Basistabelle sind teurer als für einen vollständigen Tabellenscan

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.