Eine gute Quelle für FORCE INDEX wäre das Buch MySQL Database Design and Tuning .
Auf Seite 120 Absatz 4 heißt es:
Wo passt FORCE INDEX hin? FORCE INDEX (erstmals in Version 4.0.9 aktiviert) ist USE INDEX sehr ähnlich. Der Hauptunterschied zwischen den beiden Optionen besteht darin, dass FORCE INDEX verlangt, dass MySQL den Index (falls möglich) anstelle eines teureren Tabellenscans verwendet, während USE INDEX dem Optimierer weiterhin die Auswahl eines Tabellenscans ermöglicht.
Auf derselben Seite heißt es, dass MySQL nicht warnt, dass ein Index irrelevant ist, und im Fall von USE INDEX zu einem Tabellenscan wechselt.
Daher kann FORCE INDEX den MySQL Query Optimizer aus der Gleichung entfernen, bevor der Index verwendet wird. Jede Abfrage, die FORCE INDEX ordnungsgemäß verwendet , reduziert die E / A. Warum sage ich richtig?
Denk darüber nach. Wenn der Index, durch den Sie navigieren möchten, ein Deckungsindex ist und Sie nur die Spalten benötigen, die im Deckungsindex aufgeführt sind, ist es nicht erforderlich, die Tabelle für Daten zu kontaktieren. Alle E / A sind auf Indexseiten beschränkt. Alle angeforderten Daten werden im schlimmsten Fall durch Index-Scans abgerufen. Das ist in der Tat eine gute Sache, wenn die angeforderten Daten bestellt werden müssen, um jede angeforderte Sortierung zu umgehen.
In Bezug auf "Regeln für Engagements" sollte FORCE INDEX nur verwendet werden, wenn
- unter Bezugnahme auf Indexe
- Alle Spalten im Index sind klein
- Sie tweek effektiv das Caching-Verhalten von SELECT-Abfragen
- Verwenden Sie für Ad-hoc-Abfragen SQL_NO_CACHE
- Zwischenspeichern Sie häufig aktualisierte Daten mit Bedacht
FORCE INDEX sollte nicht erstellt werden, um Abfragen zur Verwendung von Indizes zu zwingen, wenn Sie versuchen, einen quadratischen Stift in ein rundes Loch einzupassen. Mit anderen Worten, wenn Sie einen Index nur durchlaufen, um auf Tabellendaten in einer bestimmten Reihenfolge zuzugreifen, erhalten Sie nichts. Tatsächlich wird die Abfrageleistung unter den Bus geworfen, da keine Vorkenntnisse darüber vorliegen, wie verfügbar Ihre Daten sein müssen.