Maison > base de données > tutoriel mysql > Pourquoi une vue affiche-t-elle un coût nettement plus élevé que l'exécution de la même requête sur une table sous-jacente ?

Pourquoi une vue affiche-t-elle un coût nettement plus élevé que l'exécution de la même requête sur une table sous-jacente ?

Patricia Arquette
Libérer: 2024-10-24 00:26:29
original
684 Les gens l'ont consulté

Why Does a View Show Significantly Higher Cost Than Executing Same Query on an Underlying Table?

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>
Copier après la connexion

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!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal