Maison >base de données >tutoriel mysql >Comment puis-je exploiter les index dans les requêtes de vue MySQL pour améliorer les performances ?

Comment puis-je exploiter les index dans les requêtes de vue MySQL pour améliorer les performances ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-10 10:32:02396parcourir

How can I leverage indexes in MySQL view queries to improve performance?

Utilisation d'index dans les requêtes de vue MySQL

Problème :

Vous rencontrez des problèmes de performances avec une vue MySQL car l'index d'une table sous-jacente n'est pas utilisé dans les requêtes basées sur les vues.

原因:

MySQL ne pousse pas les prédicats de filtre (par exemple, WHERE arrivé_in = 2006) des requêtes externes vers les requêtes de vue. Au lieu de cela, il matérialise les résultats de la vue sous la forme d'une table temporaire intermédiaire et applique le prédicat à cette table. Par conséquent, les index de la table d'origine ne peuvent pas être utilisés efficacement.

Solution :

Pour exploiter les index dans les requêtes de vue, vous devez créer un index approprié qui peut être utilisé par la requête de vue. Dans ce cas, un index couvrant qui inclut toutes les colonnes référencées dans la requête de vue est recommandé.

Indice optimal :

CREATE INDEX highscores_IX3 ON highscores (player, wanted_in, score)

Pourquoi ça marche :

  • La colonne du joueur est utilisée comme colonne principale en raison du prédicat d'égalité OÙ joueur = 24.
  • La colonne arrivé_in est la deuxième colonne principale en raison du GROUP BY arrivé_in.
  • L'inclusion de la colonne score fait de l'index un index de couverture, permettant à MySQL de satisfaire la requête des pages d'index sans accéder aux pages de données. .

Considérations supplémentaires :

  • Vous pouvez comparer le plan d'exécution de la requête de vue à une requête autonome sans vue pour voir la différence de performances .
  • Bien que l'utilisation de vues dans MySQL ne soit pas nécessairement dangereuse, il est crucial de comprendre comment MySQL traite les requêtes pour éviter les problèmes de 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!

Déclaration:
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