Problèmes de performances d'affichage MySQL
Problème :
Un utilisateur a une requête sur une table avec 100 000 lignes, ce qui montre un coût élevé (5 200) lors du filtrage basé sur un état spécifique. La création d'une vue avec la même requête globale et le filtrage de la vue entraînent un coût nettement plus élevé (100 000).
Explication :
L'écart de coût est dû à l'algorithme de visualisation utilisé. L'algorithme par défaut pour les vues est temptable, qui récupère toutes les lignes de la table sous-jacente puis applique le filtre. Cela peut entraîner de mauvaises performances lorsque le filtrage est basé sur un petit pourcentage de lignes.
Résolution :
Pour résoudre ce problème, la vue doit être définie avec le Algorithme de merge, qui permet d'utiliser les index de la table sous-jacente et améliore l'efficacité du filtrage. Cela peut être fait en utilisant la syntaxe suivante :
<code class="sql">CREATE OR REPLACE VIEW vw_users AS SELECT state, COUNT(*) AS cnt FROM users WITH MERGE VIEW;</code>
Avec l'algorithme de fusion, la requête sur la vue peut désormais exploiter l'index sur la colonne d'état, réduisant ainsi son coût et améliorant les performances.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!