Maison > Article > base de données > Résumé de l'optimisation des clauses select et Where dans MySQL
Le contenu de cet article est un résumé de l'optimisation des clauses select et Where dans MySQL. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Optimisation de la base de données :
1. L'optimisation peut être effectuée au niveau d'une seule instruction SQL, de l'application entière, d'un seul serveur de base de données ou de plusieurs réseaux. serveurs de base de données
2. Les performances de la base de données dépendent de plusieurs facteurs au niveau de la base de données, tels que les tables, les requêtes et les paramètres de configuration
3. Optimiser au niveau de la base de données, optimiser au niveau matériel, équilibrer la portabilité et les performances
. 4. Structure appropriée, type de données approprié ; applications qui effectuent des mises à jour fréquentes avec un grand nombre de tables (peu de colonnes) ; applications qui analysent de grandes quantités de données avec un petit nombre de tables (plusieurs colonnes choisissent le moteur de stockage et l'index appropriés) ; ;
5. Compression applicable Diverses charges de travail pour les tables InnoDB, ainsi que les tables MyISAM en lecture seule
6. Choisissez une stratégie de verrouillage appropriée ; le moteur de stockage InnoDB peut gérer la plupart des problèmes de verrouillage
7. La mémoire principale les zones configurées sont le pool de tampons InnoDB et le cache de clés MyISAM.
8. Optimisez l'instruction select. Cette technique est également applicable à d'autres instructions de suppression avec où. Définir des index sur les colonnes de la clause Where ; les index sont particulièrement importants pour référencer plusieurs colonnes telles que les jointures et les clés étrangères
sélectionnez l'optimisation de la clause Where :
1. Ajustez la structure de la requête, comme les appels de fonction, appelez-les une seule fois pour chaque ligne de l'ensemble de résultats, et pour. chaque ligne de la table Appelez-la une seule fois
2. Réduisez le nombre d'analyses complètes de la table dans la requête
3. Utilisez régulièrement l'instruction ANALYZE TABLE pour maintenir les statistiques de la table à jour
4. Comprendre le réglage techniques du moteur de stockage spécifiques à chaque table, technologie d'indexation et paramètres de configuration
5. Optimiser les transactions de requête unique pour les tables InnoDB
6. Enquêter sur les détails internes d'une requête spécifique en lisant le plan EXPLAIN et en ajustant les index, OÙ clauses, clauses de jointure, etc.
7. Ajustez la taille et les propriétés de la zone mémoire utilisée par MySQL pour la mise en cache. En utilisant efficacement le pool de tampons InnoDB, le cache de clés MyISAM et le cache de requêtes MySQL
8.where conditions, suppression des parenthèses inutiles, pliage constant, suppression des conditions constantes, réduction de la logique inutile
9 Utilisées par l'index Les expressions constantes ne sont que. calculé une fois
10. count(*) est directement interrogé à partir des informations de la table ; lorsqu'il n'y a qu'une seule table, il en va de même pour les expressions non nulles
11. COUNT (), MIN(), etc.), HAVING sera fusionné avec WHERE
12. Table constante, une seule ligne ou table vide ; la clause Where agit sur la clé primaire ou l'index unique
13. et GROUP BY Si toutes les colonnes de la clause proviennent de la même table, alors la table sera préférée lors de la jointure
14. Si la clause order by et la clause group by sont différentes, ou proviennent de tables différentes, un temporaire. une table sera créée
15. Si vous utilisez le modificateur SQL_SMALL_RESULT, MySQL utilisera une table temporaire en mémoire
16. MySQL peut simplement lire les lignes de l'index sans même consulter le fichier de données
17. Avant en sortant chaque ligne, un saut passera les lignes qui ne correspondent pas à la clause HAVING
La table suivante est utilisée comme table constante :
SELECT * FROM t WHERE primary_key=1; SELECT * FROM t1,t2 WHERE t1.primary_key=1 AND t2.primary_key=t1.id;
La requête suivante s'exécute très rapidement :
SELECT COUNT(*) FROM tbl_name; SELECT MIN(key_part1),MAX(key_part1) FROM tbl_name; SELECT MAX(key_part2) FROM tbl_name WHERE key_part1=constant; SELECT ... FROM tbl_name ORDER BY key_part1,key_part2,... LIMIT 10; SELECT ... FROM tbl_name ORDER BY key_part1 DESC, key_part2 DESC, ... LIMIT 10;Supposons que la colonne d'index soit de type numérique, la requête suivante utilise uniquement l'arborescence d'index :
SELECT key_part1,key_part2 FROM tbl_name WHERE key_part1=val; SELECT COUNT(*) FROM tbl_name WHERE key_part1=val1 AND key_part2=val2; SELECT key_part2 FROM tbl_name GROUP BY key_part1;
La requête suivante utilise l'index pour récupérer les données dans un ordre trié, aucun tri séparé n'est requis
SELECT ... FROM tbl_name ORDER BY key_part1,key_part2,... ; SELECT ... FROM tbl_name ORDER BY key_part1 DESC, key_part2 DESC, ... ;
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!