SQL-Abfrage mit mehreren Indizes - SQL-server 2000
Ich benutze eine ähnliche Abfrage wie die
select.....from.. with... (INDEX=IX_TABLE_1, INDEX=IX_TABLE_2)...
Bekomme ich die folgende Fehlermeldung
Nur eine Liste von index-hints pro Tisch
erlaubt ist
Dieser scheint gut zu funktionieren mit SQL Server 2005. Ist es ein Problem mit SQL-server?
- Ich habe eine genauere Erklärung für Sie. Index Hinweise sollten wirklich nur selten verwendet werden. (Obwohl ausprobieren unterschiedliche Optionen und vorübergehend zwingen bestimmte Indizes kann ein großartiges Werkzeug zum lernen.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke es kann sein, weil die syntax, die Sie verwenden.
Statt (INDEX=IX_TABLE_1, INDEX=IX_TABLE_2), versuchen:
Ich denke, es ist die Tatsache, Sie haben 2 "INDEX=" Teile.
Außerdem würde ich empfehlen nur die Verwendung von index-hints als letzten Ausweg, wie der query Optimizer sollte in der Regel wählen Sie den besten plan/Indizes zu verwenden. Deshalb ist in der Regel, sollten Sie das Vertrauen der Optimierer. Wenn Sie verwenden Sie index-hints, es ist eine gute Idee zu überprüfen, Sie ist relativ Häufig, wie Sie können im Laufe der Zeit verschärft haben (z.B. als data-volumes wachsen, was hatte ursprünglich eine bessere Leistung mit dem Hinweis, können start-ausführen noch schlimmer).
Tatsächlich, Sie sollten nicht geben index-hints in den ersten Platz.
Erklärung
Seite Hinweis
Wenn die optimser scheint, dass eine dumme Wahl, die Indizes zu verwenden; diese Regel rechtfertigt eine weitere Untersuchung.
Zweitens, sicher sein, dass der Optimierer nicht die Ablehnung eines bestimmten index, weil in der Tat, sagte index reduziert Leistung. Zum Beispiel könnten Sie versucht sein, führen Sie einen der folgenden Schritte aus:
Index Hinweise scheinen vollkommen logisch; aber:
Schließlich
Ich bin mir nicht sicher, ob es der Fall ist; aber deine Frage nicht darauf hin, dass es ein Komplexes multi-table-Abfrage. So kann es in der Tat so trivial, wie folgt?
Unabhängig von der situation, es ist sicherlich nicht sinnvoll Hinweis mehrere Indizes für eine einzelne Tabelle (es sei denn es ist mehrere Male mit self-joins). Sie sagte:
Und ich haben zu Fragen: Sind Sie sicher?
Ich versuchte es; und so viel wie es nicht die Ursache für eine Fehlermeldung - es ernsthaft verwirrt die Optimierungstools. Es Zwang die Optimierungstool Durchlaufen die gleiche Tabelle zweimal (unnötig) und join the result sets zurück, um jede andere - dass hieraus ein enormer Aufwand!!