2 Stimmen

Index "aktivierte" Felder eine gute Idee?

Der Inhalt einer Website wird in einer MySQL-Datenbank gespeichert. 99% der Inhalte werden aktiviert, aber einige (Benutzer, Beiträge usw.) werden deaktiviert. Die meisten der Abfragen enden als WHERE (...) AND enabled

Ist es eine gute Idee, einen Index für das Feld "aktiviert" zu erstellen?

1voto

bobince Punkte 512550

Es wäre nicht sehr sinnvoll, einen Index nur für enabled allein. Es könnte jedoch sinnvoll sein, einen zusammengesetzten Index zu erstellen, in dem enabled enthalten ist, um Folgendes zu erreichen ORDER BY Optimierung .

Wenn zum Beispiel so etwas eine häufige Anfrage wäre:

SELECT * FROM things WHERE c1='foo' AND enabled=1 ORDER BY c2

Ein Index über c1 würde es ermöglichen, die übereinstimmenden Zeilen schnell zu finden, aber es müsste immer noch in einem separaten Schritt sortiert werden, indem c2 .

Ein Index über c1, c2 sollte es ermöglichen, die Sortierung vom Index aus vorzunehmen, was die Abfragesortierung erheblich beschleunigen würde, aber das Fehlen von enabled im Index würde das vereiteln, weil es die Liste der übereinstimmenden Zeilen kompilieren müsste, die durch c1 , dann jede Zeile scannen, um zu prüfen, ob sie enabled vor der Sortierung der Ergebnisse nach c2 .

Wäre der Index enabled, c1, c2 o c1, enabled, c2 können die gesamte WHERE-Bedingung und das ORDERing direkt aus dem Index übernommen werden, was zu schnelleren Ergebnissen führt.

Wie immer hängt es davon ab, welche Abfragen Sie machen; Sie sollten EXPLAIN Ihre häufigsten Abfragen, um sicherzugehen, was es tut.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X