Méthodes d'optimisation SQL : 1. Essayez d'éviter d'utiliser [select *], les champs inutiles réduiront l'efficacité des requêtes ; 2. Évitez d'utiliser in et not in, vous pouvez choisir entre et existe à la place ; , vous pouvez choisir l'union à la place.
Méthode d'optimisation SQL :
(apprentissage recommandé : tutoriel mysql)
1. un index dans la table, donnant la priorité aux champs utilisés par où et groupés par.
2. Essayez d'éviter d'utiliser select *. Le renvoi de champs inutiles réduira l'efficacité des requêtes. Comme suit :
SELECT * FROM t
Méthode d'optimisation : utilisez des champs spécifiques au lieu de *, et ne renvoyez que les champs utilisés.
3. Essayez d'éviter d'utiliser in et not in, ce qui entraînerait l'abandon de l'index par le moteur de base de données et une analyse complète de la table. Comme suit :
SELECT * FROM t WHERE id IN (2,3) SELECT * FROM t1 WHERE username IN (SELECT username FROM t2)
Méthode d'optimisation : S'il s'agit d'une valeur continue, elle peut être remplacée par between. Comme suit :
SELECT * FROM t WHERE id BETWEEN 2 AND 3
S'il s'agit d'une sous-requête, elle peut être remplacée par exist. Comme suit :
SELECT * FROM t1 WHERE EXISTS (SELECT * FROM t2 WHERE t1.username = t2.username)
4. Essayez d'éviter d'utiliser ou, ce qui entraînerait l'abandon de l'index par le moteur de base de données et une analyse complète de la table. Comme suit :
SELECT * FROM t WHERE id = 1 OR id = 3
Méthode d'optimisation : Union peut être utilisée à la place de ou. Comme suit :
SELECT * FROM t WHERE id = 1 UNION SELECT * FROM t WHERE id = 3
(PS : Si les champs des deux côtés de ou sont les mêmes, comme dans l'exemple. Il semble que les deux méthodes aient à peu près la même efficacité, même si l'union scanne l'index, ou analyse la table entière)
5. Essayez d'éviter les requêtes floues au début des champs, ce qui entraînerait l'abandon de l'index par le moteur de base de données et une analyse complète de la table. Comme suit :
SELECT * FROM t WHERE username LIKE '%li%'
Méthode d'optimisation : essayez d'utiliser une requête floue après le champ. Comme suit :
SELECT * FROM t WHERE username LIKE 'li%'
6. Essayez d'éviter de juger des valeurs nulles, ce qui entraînerait l'abandon de l'index par le moteur de base de données et une analyse complète de la table. Comme suit :
SELECT * FROM t WHERE score IS NULL
Méthode d'optimisation : Vous pouvez ajouter une valeur par défaut de 0 au champ et juger la valeur 0. Comme suit :
SELECT * FROM t WHERE score = 0
7. Essayez d'éviter d'effectuer des expressions et des opérations de fonction sur le côté gauche du signe égal dans la condition Where, ce qui entraînerait l'abandon de l'index par le moteur de base de données et une analyse complète de la table. Comme suit :
SELECT * FROM t2 WHERE score/10 = 9 SELECT * FROM t2 WHERE SUBSTR(username,1,2) = 'li'
Méthode d'optimisation : les expressions et les opérations de fonction peuvent être déplacées vers la droite du signe égal. Comme suit :
SELECT * FROM t2 WHERE score = 10*9 SELECT * FROM t2 WHERE username LIKE 'li%'
8 Lorsque la quantité de données est importante, évitez d'utiliser la condition où 1=1. Habituellement, afin de faciliter l'assemblage des conditions de requête, nous utiliserons cette condition par défaut, et le moteur de base de données abandonnera l'index et effectuera une analyse complète de la table. Comme suit :
SELECT * FROM t WHERE 1=1
Méthode d'optimisation : utilisez le code pour juger lors de l'assemblage de SQL S'il n'y a pas de où, ajoutez où, s'il y a où, ajoutez et.
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!