Maison > base de données > tutoriel mysql > le corps du texte

Explication détaillée MySQL haute performance de l'optimisation de types spécifiques de requêtes

黄舟
Libérer: 2017-03-15 17:23:48
original
1697 Les gens l'ont consulté


Cette section est principalement destinée à certains types spécifiques de requêtes d'optimisation :
(1) optimisation des requêtes de comptage
(2) Requête associée
(3) Sous-requête
(4) Optimisation GROUP BY et DISTINCT
(5) Optimisation de la pagination LIMIT

Optimisation des requêtes de comptage

Le rôle de la fonction d'agrégation COUNT() :
(1) Compter le nombre de valeurs dans un certain colonne, et vous pouvez également compter le nombre de lignes. Il convient de noter que lors du comptage des valeurs de colonne, la valeur de la colonne doit être non vide (NULL n'est pas compté)

(2) Comptez le nombre de lignes dans l'ensemble de résultats. Lorsque la valeur de la colonne ne peut pas être vide, le nombre de lignes du tableau est compté. Mais pour vous assurer que vous devez utiliser COUNT() pour obtenir le nombre de lignes dans le jeu de résultats. Le caractère générique ignorera directement toutes les valeurs de colonne et calculera directement le nombre de lignes pour l'optimisation.

Pour le moteur de stockage MyISAM, COUNT(*) est très rapide lorsque les conditions de requête Where ne sont pas limitées dans une seule table, car MyISAM lui-même a déjà stocké le nombre total de lignes. Lorsqu'il existe des conditions de qualification, des statistiques de requête sont également requises.

Ce qui suit est un exemple d'optimisation simple :
(1) Optimisation 1 :

Explication détaillée MySQL haute performance de loptimisation de types spécifiques de requêtes

On peut voir que si l'on vérifie directement l'enregistrement de id>100 , impliquant l'analyse de plus de 20 millions de lignes d'enregistrements. Mais grâce à la fonctionnalité COUNT(), nous pouvons utiliser count() - (id

(2) Optimisation 2 :
De plus, une autre méthode d'optimisation consiste à utiliser un index de couverture.

Optimisation des requêtes associatives

(1) Assurez-vous qu'il y a un index sur la colonne de la clause ON ou USING. Lors de la création d'un index, vous devez considérer l'ordre d'association. Lorsque la table A et la table B sont associées à la colonne c, si l'ordre d'association de l'optimiseur est B, A, il vous suffit de créer un index sur la table A. Les index inutilisés occuperont du stockage


(2) Assurez-vous que l'expression dans toute opération Group by et order by n'implique que les colonnes d'une seule table. De cette façon, il est possible pour MySQL d'utiliser l'optimisation d'index

Sous-requête

Utilisez le moins possible les sous-requêtes, car les sous-requêtes généreront des tables temporaires à moins que ; like count(*) La table temporaire est très petite.

Optimisation GROUP BY et DISTINCT

Le moyen le plus efficace d'optimiser GROUP BY et DISTINCT est d'utiliser des index.

Lorsque l'index ne peut pas être utilisé, le group by est complété à l'aide de deux stratégies : table temporaire ou tri de fichiers pour le regroupement.

Toutes les colonnes à regrouper doivent être indexées. Par exemple :

select product, count(*) from orders group by product;
Copier après la connexion

Une telle requête doit créer un index pour le produit.

Optimisation de la pagination LIMIT

Lors de l'exécution d'opérations de pagination, certaines données sont généralement interrogées via des décalages. Ensuite couplée à l'ordre expliqué par, les performances sont généralement bonnes.

Assurez-vous d'ajouter un index à l'ordre par colonne.

Mais pour la limite 10 000, 10, pour récupérer les 10 enregistrements cibles, vous devez d'abord interroger les 10 000 enregistrements précédents. Le coût est très élevé. Dans ce cas, le moyen le plus simple d’optimiser est d’utiliser un indice de couverture.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!