Ich war kürzlich in einer Präsentation eines Facebook MySQL-Ingenieurs und er erwähnte dort, dass die Verwendung von FORCE INDEX
E / A reduziert.
Dies hatte damit zu tun, dass das MySQL Query Optimizer nicht zum Datenwörterbuch gehen und Berechnungen durchführen musste.
- Kann jemand erklären, wie das funktioniert (vorzugsweise mit Referenzen)?
- Ist dies eine gute Optimierungspraxis im Allgemeinen?
mysql
index
optimization
Jonathan
quelle
quelle
FORCE
liegen in der Flexibilität (Ihr Optimierer ist gebunden) und möglicherweise sogar in der Leistung (sollten Sie den falschen Index auswählen oder sollten sich die Statistiken erheblich ändern). Dennoch denke ich, dass die Antworten auf diese Frage informativ sein sollten.Antworten:
Eine gute Quelle für FORCE INDEX wäre das Buch MySQL Database Design and Tuning .
Auf Seite 120 Absatz 4 heißt es:
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
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.
quelle