Der Indexhinweis ist nur für Microsoft Dynamics-Datenbankserver verfügbar. Bei herkömmlichem SQL Server sollten die Filter, die Sie in Ihrer 'Where'-Klausel definieren, die Engine davon überzeugen, relevante Indizes zu verwenden ... Vorausgesetzt, der Ausführungsplan der Engine kann effizient identifizieren, wie die Informationen gelesen werden sollen (ob ein vollständiger Tabellenscan oder ein indizierter Scan ) - Es muss die beiden vergleichen, bevor die eigentliche Anweisung als Teil seines integrierten Leistungsoptimierers ausgeführt wird.
Sie können den Optimierer jedoch zwingen, mit etwas wie zu scannen
Select *
From [yourtable] With (Index(0))
Where ...
Oder um einen bestimmten Index zu suchen, indem Sie so etwas verwenden
Select *
From [yourtable] With (Index(1))
Where ...
Es ist deine Entscheidung. Sehen Sie sich die Indexeigenschaften der Tabelle im Objektfenster an, um eine Vorstellung davon zu erhalten, welchen Index Sie verwenden möchten. Es sollte zu Ihren Filtern passen.
Um die besten Ergebnisse zu erzielen, listen Sie die Filter auf, die zuerst die wenigsten Ergebnisse liefern würden. Ich weiß nicht, ob ich richtig sage, aber es scheint, dass die Abfragefilter sequentiell sind. Wenn Sie Ihre Sequenz richtig eingestellt haben, sollte der Optimierer dies nicht für Sie tun müssen, indem er alle Kombinationen vergleicht, oder zumindest nicht mit den teureren Abfragen beginnen.