Heim >Datenbank >MySQL-Tutorial >Wie kann die Anzeigeleistung optimiert werden, wenn sich die WHERE-Klausel auf die Anzahl der Abfragen auswirkt?
Eine Abfrage zum Zählen von Benutzern in einem bestimmten Bundesstaat zeigt höhere Kosten bei einer Ansicht im Vergleich zu einer direkten Tabellenscan. Wie funktioniert die WHERE-Klausel in Ansichten und wie kann dieses Leistungsproblem gelöst werden?
Das Verhalten der WHERE-Klausel in Ansichten wird durch den verwendeten Ansichtsalgorithmus bestimmt.
Normalerweise wird in einer Ansicht die WHERE-Klausel angewendet, nachdem die Ansicht alle Zeilen aus der zugrunde liegenden Tabelle abgerufen hat. Dieser Algorithmus ist als temptable bekannt. Allerdings wurde in diesem Fall der temptable-Algorithmus nicht verwendet. Stattdessen wurde der merge-Algorithmus verwendet.
Der Merge-Algorithmus ist in den meisten Fällen effizienter, wird jedoch nicht unterstützt, wenn die Ansicht Aggregatfunktionen (wie COUNT()) oder eine GROUP BY-Klausel enthält .
Um dieses Problem zu beheben, kann die Ansichtsdefinition geändert werden, um COUNT(*) durch COUNT(DISTINCT state) zu ersetzen. Dadurch wird MySQL gezwungen, den Zusammenführungsalgorithmus zu verwenden, was die Leistung erheblich verbessern kann.
<code class="sql">CREATE OR REPLACE VIEW vw_users AS SELECT state, COUNT(DISTINCT state) AS cnt FROM users; EXPLAIN SELECT cnt FROM vw_users WHERE state = 'ca';</code>
Das obige ist der detaillierte Inhalt vonWie kann die Anzeigeleistung optimiert werden, wenn sich die WHERE-Klausel auf die Anzahl der Abfragen auswirkt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!