Plusieurs méthodes pour optimiser les instructions SQL incluent : 1. Unifier le format des instructions SQL ; 2. Optimiser les requêtes et éviter les analyses de tables complètes ; 3. Les instructions SQL doivent être concises 4. Envisager d'utiliser des « tables temporaires » pour stocker temporairement les instructions SQL ; résultats ; 5. Essayez d’éviter les opérations de transaction volumineuses ; 6. Essayez d’éviter de renvoyer de grandes quantités de données au client. L'article suivant vous présentera quelques détails, j'espère qu'il vous sera utile.
Au début de notre projet de développement, en raison de la quantité relativement faible de données métier, l'impact de l'efficacité d'exécution de certains SQL sur l'efficacité d'exécution du programme n'était pas évident, et le personnel de développement, d'exploitation et de maintenance est également impossible de juger de l'efficacité de SQL sur l'efficacité de fonctionnement du programme, c'est pourquoi une optimisation spéciale de SQL est rarement effectuée à mesure que le temps s'accumule et que la quantité de données commerciales augmente. L'impact de l'efficacité de l'exécution de SQL sur l'efficacité d'exécution du programme augmente progressivement. À ce stade, l'optimisation de SQL est nécessaire.
Plusieurs méthodes pour optimiser les instructions SQL :
1. Unifier le format des instructions SQL
Pour les deux instructions SQL suivantes, de nombreuses personnes pensent qu'elles sont identiques, mais l'optimiseur de requêtes de base de données pense qu'elles sont différentes. Quantityselect * from dual
select * From dual
2. Utilisez * avec parcimonie , remplacez "*" par une liste de champs spécifique et ne renvoyez aucun champ inutilisé.
3. Pour optimiser la requête, les analyses de tables complètes doivent être évitées autant que possible
1). commander par. 2) Essayez d'éviter de juger la valeur nulle des champs dans la clause Where, sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table, comme :select id from t where num is null
select id from t where num=0
select id from t where num=10 or num=20
select id from t where num=10 union all select id from t where num=20
select id from t where num in(1,2,3)
select id from t where num between 1 and 3
select * from contact where username like ‘%yue%’
select id from t where num/2=100
select id from t where num=100*2
select id from t where substring(name,1,3)='abc'
select id from t where name like 'abc%'
4.
Dans de nombreux cas, utiliser exist au lieu de in est un bon choix Exists vérifie uniquement l'existence, et ses performances sont bien meilleures que in. Exemple :select num from a where num in(select num from b)
select num from a where exists(select 1 from b where num=a.num)
5. N'écrivez pas d'instructions SQL trop longues, trop redondantes et soyez concises ; peut être utilisé N'utilisez jamais deux phrases dans une phrase
Généralement, les résultats d'une instruction Select sont utilisés comme un sous-ensemble, puis la requête est effectuée à partir du sous-ensemble. Ce type d'instruction imbriquée est relativement. courant, mais D'après l'expérience, s'il y a plus de 3 niveaux d'imbrication, l'optimiseur de requêtes donnera facilement un plan d'exécution incorrect. Parce qu'il était abasourdi. Des choses comme l’intelligence artificielle sont finalement inférieures à la résolution humaine. Si les gens ont le vertige, je peux garantir que la base de données le sera également. De plus, le plan d'exécution peut être réutilisé. Plus l'instruction SQL est simple, plus la possibilité de réutilisation est élevée. Tant qu'un caractère change dans une instruction SQL complexe, il doit être réanalysé, et beaucoup de déchets seront alors stockés dans la mémoire. Il est concevable à quel point la base de données sera inefficace.6. Envisagez d'utiliser des « tables temporaires » pour stocker temporairement les résultats intermédiaires.
Un moyen important de simplifier les instructions SQL consiste à utiliser des tables temporaires pour stocker temporairement les résultats intermédiaires. , la table temporaire Les avantages sont bien plus que ceux-ci. Les résultats temporaires sont temporairement stockés dans la table temporaire et les requêtes suivantes sont dans tempdb. Cela peut éviter plusieurs analyses de la table principale dans le programme et réduit également considérablement le "partagé". lock" bloquant le "verrouillage de mise à jour" pendant l'exécution du programme. , réduisant le blocage et améliorant les performances de concurrence.7. Lors de l'utilisation d'un champ d'index comme condition, si l'index est un index composé, le premier champ de l'index doit être utilisé comme condition pour garantir que le système utilise l'index. , les index ne seront pas utilisés et l'ordre des champs doit être cohérent avec l'ordre des index dans la mesure du possible.
8. Utilisez autant que possible des champs numériques Si les champs contenant uniquement des informations numériques ne doivent pas être conçus comme des champs de caractères, cela réduira les performances des requêtes et des connexions et augmentera la surcharge de stockage. .
En effet, le moteur comparera chaque caractère de la chaîne un par un lors du traitement des requêtes et des connexions, et pour les types numériques, une seule comparaison suffit.
9. Utilisez varchar au lieu de char autant que possible, car tout d'abord, les champs de longueur variable ont un petit espace de stockage et peuvent économiser de l'espace de stockage. petit champ L'efficacité de la recherche est évidemment plus élevée.
10. Évitez de créer et de supprimer fréquemment des tables temporaires pour réduire la consommation des ressources des tables système.
11. Essayez d'éviter d'utiliser des curseurs , car les curseurs sont moins efficaces si les données exploitées par le curseur dépassent 10 000 lignes, vous devriez envisager de les réécrire.
12. Essayez d'éviter les opérations de transactions volumineuses et d'améliorer la simultanéité du système.
13. Essayez d'éviter de renvoyer de grandes quantités de données au client Si la quantité de données est trop importante, vous devez vous demander si les exigences correspondantes sont raisonnables.
Tutoriels vidéo associés recommandés : "Tutoriel MySQL"
Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'apprentissage de chacun. Pour un contenu plus passionnant, vous pouvez prêter attention aux colonnes de didacticiels pertinentes du site Web PHP chinois ! ! !
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!