Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL Server-Pläne:Unterschied zwischen Index Scan / Index Seek

Bei einem Index-Scan liest der SQL-Server den gesamten Index und sucht nach Übereinstimmungen - die dafür benötigte Zeit ist proportional zur Größe des Index.

Bei einer Indexsuche verwendet der SQL-Server die B-Tree-Struktur des Indexes, um direkt nach übereinstimmenden Datensätzen zu suchen (siehe http://mattfleming.com/node/192 für eine Idee, wie das funktioniert) - die benötigte Zeit ist nur proportional zur Anzahl der übereinstimmenden Datensätze.

  • Im Allgemeinen ist eine Indexsuche einem Indexscan vorzuziehen (wenn die Anzahl der übereinstimmenden Datensätze proportional viel geringer ist als die Gesamtzahl der Datensätze), da die Zeit, die zum Durchführen einer Indexsuche benötigt wird, unabhängig von der Gesamtzahl konstant ist Datensätze in Ihrer Tabelle.
  • Beachten Sie jedoch, dass in bestimmten Situationen ein Indexscan schneller sein kann als eine Indexsuche (manchmal erheblich schneller) - normalerweise, wenn die Tabelle sehr klein ist oder wenn ein großer Prozentsatz der Datensätze mit dem Prädikat übereinstimmt.