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

SQL Server 2005 hat einen Ausführungsplan zwischengespeichert, der niemals funktionieren konnte

Vielleicht interessieren Sie sich für den Erste Programmierregel .

Ein Clustered-Index enthält immer alle Zeilen. Es kann nach z sortiert werden , enthält aber weiterhin alle anderen Spalten auf Blattebene.

Der Grund, warum SQL Server manchmal einen geclusterten Scan einer Indexsuche vorzieht, ist folgender. Wenn Sie eine Indexsuche durchführen, müssen Sie eine Lesezeichensuche im Clustered-Index durchführen, um Spalten abzurufen, die nicht im Index enthalten sind.

Wenn Sie einen Clustered-Index-Scan durchführen, finden Sie per Definition alle Spalten. Das bedeutet, dass keine Lesezeichensuche erforderlich ist.

Wenn SQL Server viele Zeilen erwartet, versucht es, die Lesezeichensuchen zu vermeiden. Dies ist eine bewährte Wahl. Nonclustered-Index-Suchvorgänge werden routinemäßig von Clustered-Index-Scans geschlagen.

Sie können dies für Ihren Fall testen, indem Sie entweder mit with (index(IX_YourIndex)) Abfragehinweis .