Frage

Inhalt einer Website in einer MySQL-Datenbank gespeichert. 99% des Inhalts wird aktiviert, aber einige (Benutzer, Beiträge etc.) wird deaktiviert. Die meisten der Anfragen enden als WHERE (...) AND enabled

Ist es eine gute Idee, einen Index für das Feld ‚Aktiviert‘ erstellen?

War es hilfreich?

Lösung

Es würde nicht viel nützen allein einen Index nur auf enabled zu schaffen. Aber es könnte nützlich sein, eine Verbindung Index zu erstellen, in dem enabled enthalten ist, um ORDER BY-Optimierung .

Zum Beispiel, wenn so etwas wie dies eine gemeinsame Abfrage ist:

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

Ein Index für c1 würde die passenden Zeilen erlaubt schnell gefunden werden, aber es müßte noch in einer separaten Schritt unter Verwendung von c2 sortiert werden.

Ein Index für c1, c2 sollte der Reihenfolge, damit aus dem Index durchgeführt werden, stark die Abfrage beschleunigte Sortierung, aber der Mangel an enabled im Index würde die Niederlage, denn es haben würde, die Liste der passenden Zeilen kompilieren indiziert von c1, und scannen jede Zeile es die enabled zu überprüfen, bevor die Ergebnisse von c2 sortieren.

Wenn der Index enabled, c1, c2 oder c1, enabled, c2 sind, die ganze WHERE-Bedingung und der Besteller konnten aus dem Index direkt getroffen werden, so dass schnellere Ergebnisse.

Wie immer, es wird davon abhängen, was fragt Sie tun; Sie sollten ERKLÄREN Ihre meistverbreitete Abfragen Check sicher, was es tut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top