Maison >base de données >tutoriel mysql >Quelles sont les différentes méthodes de réglage SQL des bases de données ?
Méthode : 1. Lors de la création d'un index, essayez d'éviter les analyses de table complètes ; 2. Évitez d'utiliser des calculs sur l'index ; 3. Essayez d'utiliser du SQL paramétré 4. Essayez de compresser plusieurs instructions SQL en un seul SQL ; ; 5. Remplacez la clause HAVING par la clause Where ; 6. Lorsque vous connectez plusieurs tables, utilisez des alias de table. 7. Essayez d'éviter d'utiliser des curseurs, etc.
L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.
1. Pour éviter les analyses de table complètes, vous devez d'abord envisager de créer des index sur les colonnes impliquées dans où et trier par
2. (1) Créez un index sur les champs qui doivent souvent être récupérés. Par exemple, si vous souhaitez récupérer en fonction du nom d'utilisateur du champ de table, vous devez créer un index sur le champ de nom. Récupérez en fonction du service employé et du niveau du poste de l'employé, puis des index doivent être créés sur les deux champs du service employé et du niveau du poste de l'employé.
(2) L'amélioration des performances apportée par la création d'un index pour la récupération est souvent énorme, donc lorsque vous constatez que la vitesse de récupération est trop lente, la première chose à laquelle vous devriez penser est de créer un index.
(3) Il est préférable de ne pas avoir plus de 6 index sur une table. S'il y en a trop, vous devez vous demander s'il est nécessaire de créer des index sur certaines colonnes qui ne sont pas couramment utilisées. Plus il y a d'index, mieux c'est. Bien que l'index puisse améliorer l'efficacité de la sélection correspondante, il réduit également l'efficacité de l'insertion et de la mise à jour, car l'index peut être reconstruit lors de l'insertion ou de la mise à jour, donc la façon de construire l'index doit être soigneusement effectuée. considéré, en fonction de la situation spécifique.
Dans la clause Where, si la colonne d'index fait partie d'un calcul ou d'une fonction, l'optimiseur de SGBD n'utilisera pas l'index Lors de l'utilisation d'une requête de table complète, la fonction est une sorte de calcul EXISTS est généralement utilisée dans in et existe car in n'utilise pas d'index
Faible efficacité :
select * from user where salary*22>11000(salary是索引列)
Haute efficacité :
select * from user where salary>11000/22(salary是索引列)
Les programmes exécutent généralement du SQL de manière dynamique en fonction des entrées de l'utilisateur. À l'heure actuelle, le SQL paramétré doit être utilisé autant que possible. Cela peut non seulement éviter les attaques de vulnérabilité par injection SQL. minimisera également les bases de données importantes précompileront ces SQL paramétrés, de sorte que lors de sa première exécution, le SGBD optimisera la requête et effectuera une précompilation pour l'instruction SQL, de sorte que lorsque le SQL sera exécuté à l'avenir, le résultat précompilé sera être utilisé directement. Peut grandement améliorer la vitesse d’exécution.
Chaque fois que vous exécutez SQL, vous devez établir une connexion réseau, effectuer une vérification des autorisations, optimiser la requête de l'instruction SQL et envoyer les résultats de l'exécution : ce processus prend beaucoup de temps, vous devez donc essayer d'éviter d'exécuter trop d'instructions SQL. Si vous pouvez le compresser en une seule instruction SQL, n'utilisez pas plusieurs instructions pour l'exécuter.
Évitez d'utiliser la clause HAVING, car HAVING ne filtrera l'ensemble de résultats qu'une fois tous les enregistrements récupérés, tandis que Where est brossé avant l'agrégation. Sélectionnez les enregistrements. . Si vous pouvez limiter le nombre d'enregistrements via les clauses Where, vous pouvez réduire cette surcharge. Les conditions dans HAVING sont généralement utilisées pour filtrer les fonctions d'agrégation. De plus, les conditions doivent être écrites dans la clause Where.
Lors de la connexion de plusieurs tables dans une instruction SQL, veuillez utiliser des alias de table et préfixer l'alias à chaque nom de colonne. Cela peut réduire le temps d'analyse et réduire les erreurs de syntaxe causées par
ambiguïtés dans les noms de colonnes d'amis.
Lorsque l'instruction SQL nécessite l'union de deux ensembles de résultats de requête, même s'il n'y a pas d'enregistrements en double dans les résultats de récupération, si les deux ensembles de résultats d'union sont utilisés. Il essaiera également de fusionner puis de trier avant de produire le résultat final. Par conséquent, si l'on peut juger qu'il n'y aura pas d'enregistrements en double dans les résultats de la recherche, l'union all doit être utilisée, afin que l'efficacité soit améliorée.
Un moyen important de simplifier les instructions SQL consiste à utiliser des tables temporaires pour stocker temporairement les résultats intermédiaires. Cependant, les avantages des tables temporaires. allez bien au-delà de ceux-ci. Stockez temporairement les résultats temporaires dans la table temporaire, et les requêtes suivantes seront dans tempdb. Cela peut éviter plusieurs analyses de la table principale dans le programme et réduit également considérablement le "verrouillage partagé" bloquant le "verrouillage de mise à jour". pendant l'exécution du programme, réduisant le blocage et améliorant les performances de concurrence améliorées.
Mais vous devez également éviter de créer et de supprimer fréquemment des tables temporaires pour réduire la consommation des ressources des tables système.
Une instruction SQL dans SQL Server est une transaction par défaut et elle est validée par défaut après l'exécution de l'instruction. En fait, il s'agit d'une forme minimisée de start tran, tout comme un start tran est implicite au début de chaque instruction et un commit est implicite à la fin.
Dans certains cas, nous devons déclarer explicitement start tran. Par exemple, lors de l'exécution d'opérations « d'insertion, de suppression et de modification », nous devons modifier plusieurs tables en même temps. tables est réussie ou aucune des modifications n'a réussi. begin tran peut jouer un tel rôle. Il peut exécuter plusieurs instructions SQL ensemble et finalement les valider ensemble. L’avantage est que la cohérence des données est garantie, mais rien n’est parfait. Le prix payé par Begin tran est qu'avant la soumission, toutes les ressources verrouillées par les instructions SQL ne peuvent pas être libérées tant qu'elles ne sont pas validées.
On peut voir que si Begin tran piège trop d'instructions SQL, les performances de la base de données seront terribles. Avant qu'une transaction importante ne soit validée, d'autres déclarations seront inévitablement bloquées, ce qui entraînera de nombreux blocages.
Le principe d'utilisation de Begin tran est que, dans le but d'assurer la cohérence des données, moins il y a d'instructions SQL piégées par Begin tran, mieux c'est ! Dans certains cas, des déclencheurs peuvent être utilisés pour synchroniser les données, et commencer la transmission n'est pas nécessairement utilisé.
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. L'efficacité des curseurs étant médiocre, si les données exploitées par le curseur dépassent 10 000 lignes, vous devriez alors envisager de les réécrire.
Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !
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!