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

Wählen Sie die Auswertungsreihenfolge der Where-Klausel aus

Es gibt keine Garantien für die Bewertungsreihenfolge. Der Optimierer wird versuchen, anhand der verfügbaren Informationen den effizientesten Weg zur Ausführung der Abfrage zu finden.

Da in Ihrem Fall c indexiert ist und d nicht, sollte der Optimierer den Index durchsuchen, um alle Zeilen zu finden, die mit dem Prädikat auf c übereinstimmen, und dann diese Zeilen aus den Tabellendaten abrufen, um das Prädikat auf d auszuwerten.

Wenn es jedoch feststellt, dass der Index auf c nicht sehr selektiv ist (obwohl dies in Ihrem Beispiel nicht der Fall ist, wird eine Geschlechterspalte selten sinnvoll indiziert), kann es sich entscheiden, den Tabellenscan trotzdem durchzuführen.

Um die Ausführungsreihenfolge zu bestimmen, sollten Sie einen Erklärungsplan für Ihre Abfrage erhalten. Beachten Sie jedoch, dass sich dieser Plan ändern kann, je nachdem, was der Optimierer derzeit für die beste Abfrage hält.