Maison base de données tutoriel mysql Comment optimiser l'instruction SQL ?

Comment optimiser l'instruction SQL ?

Apr 08, 2019 am 11:06 AM
sql 优化

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.

Comment optimiser l'instruction SQL ?

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.

Quantity 

select * from dual

Quantity 

select * From dual

Bien que le cas soit seulement différent, l'analyseur de requêtes considère qu'il s'agit de deux instructions SQL différentes et doit être analysée deux fois. . Générez 2 plans d'exécution. Par conséquent, en tant que programmeur, vous devez vous assurer que la même instruction de requête est cohérente partout, même un espace de plus ne fonctionnera pas !

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
Copier après la connexion
peut être utilisé dans Définissez la valeur par défaut 0 sur num, assurez-vous qu'il n'y a pas de valeur nulle dans la colonne num du tableau, puis interrogez comme ceci :

select id from t where num=0
Copier après la connexion
3), essayez d'éviter d'utiliser ! = ou <> dans la clause Where , sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table

4) Essayez d'éviter d'utiliser ou dans la clause Where pour connecter les conditions , sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table, telle que :

select id from t where num=10 or num=20
Copier après la connexion
peut être interrogé comme ceci :

select id from t where num=10    
union all    
select id from t where num=20
Copier après la connexion
5), utilisez in et not in avec prudence, sinon cela entraînera une analyse complète du tableau, tel que :

select id from t where num in(1,2,3)
Copier après la connexion
Pour les valeurs continues, si vous pouvez utiliser entre, n'utilisez pas in :

select id from t where num between 1 and 3
Copier après la connexion
6). Utilisation raisonnable de requêtes floues

Parfois, vous devez effectuer des requêtes floues, telles que :

select * from contact where username like ‘%yue%’
Copier après la connexion
Mot clé %yue%. utilisé devant yue, la requête doit parcourir toute la table. Sauf nécessité, n'ajoutez pas % devant le mot-clé

7 ), vous devriez essayer d'éviter d'effectuer des opérations d'expression sur les champs de la clause Where, ce qui amènera le moteur à abandonner l'utilisation de l'index et à effectuer une analyse complète de la table. Par exemple :

select id from t where num/2=100
Copier après la connexion
doit être remplacé par :

select id from t where num=100*2
Copier après la connexion
8), vous devez essayer d'éviter d'effectuer des opérations fonctionnelles sur les champs de la clause Where, ce qui entraînerait le moteur à abandonnez l’utilisation de l’index et procédez à l’analyse complète de la table. Par exemple :

Interrogez l'ID dont le nom commence par abc

select id from t where substring(name,1,3)=&#39;abc&#39;
Copier après la connexion
doit être remplacé par :

select id from t where name like &#39;abc%&#39;
Copier après la connexion

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)
Copier après la connexion
Remplacez par l'instruction suivante : 

select num from a where exists(select 1 from b where num=a.num)
Copier après la connexion

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!

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Quelle est la différence entre HQL et SQL dans le framework Hibernate ? Apr 17, 2024 pm 02:57 PM

HQL et SQL sont comparés dans le framework Hibernate : HQL (1. Syntaxe orientée objet, 2. Requêtes indépendantes de la base de données, 3. Sécurité des types), tandis que SQL exploite directement la base de données (1. Normes indépendantes de la base de données, 2. Exécutable complexe requêtes et manipulation de données).

Utilisation de l'opération de division dans Oracle SQL Utilisation de l'opération de division dans Oracle SQL Mar 10, 2024 pm 03:06 PM

"Utilisation de l'opération de division dans OracleSQL" Dans OracleSQL, l'opération de division est l'une des opérations mathématiques courantes. Lors de l'interrogation et du traitement des données, les opérations de division peuvent nous aider à calculer le rapport entre les champs ou à dériver la relation logique entre des valeurs spécifiques. Cet article présentera l'utilisation de l'opération de division dans OracleSQL et fournira des exemples de code spécifiques. 1. Deux méthodes d'opérations de division dans OracleSQL Dans OracleSQL, les opérations de division peuvent être effectuées de deux manières différentes.

Comparaison et différences de syntaxe SQL entre Oracle et DB2 Comparaison et différences de syntaxe SQL entre Oracle et DB2 Mar 11, 2024 pm 12:09 PM

Oracle et DB2 sont deux systèmes de gestion de bases de données relationnelles couramment utilisés, chacun possédant sa propre syntaxe et ses propres caractéristiques SQL. Cet article comparera et différera la syntaxe SQL d'Oracle et de DB2, et fournira des exemples de code spécifiques. Connexion à la base de données Dans Oracle, utilisez l'instruction suivante pour vous connecter à la base de données : CONNECTusername/password@database Dans DB2, l'instruction pour vous connecter à la base de données est la suivante : CONNECTTOdataba.

Comment résoudre l'erreur 5120 dans SQL Comment résoudre l'erreur 5120 dans SQL Mar 06, 2024 pm 04:33 PM

Solution : 1. Vérifiez si l'utilisateur connecté dispose des autorisations suffisantes pour accéder ou utiliser la base de données, et assurez-vous que l'utilisateur dispose des autorisations appropriées ; 2. Vérifiez si le compte du service SQL Server est autorisé à accéder au fichier spécifié ou ; dossier et assurez-vous que le compte dispose des autorisations suffisantes pour lire et écrire le fichier ou le dossier ; 3. Vérifiez si le fichier de base de données spécifié a été ouvert ou verrouillé par d'autres processus, essayez de fermer ou de libérer le fichier et réexécutez la requête ; . Essayez en tant qu'administrateur, exécutez Management Studio en tant que etc.

Concurrence en technologie de base de données : quelles sont les différences entre Oracle et SQL ? Concurrence en technologie de base de données : quelles sont les différences entre Oracle et SQL ? Mar 09, 2024 am 08:30 AM

Concurrence en technologie de base de données : quelles sont les différences entre Oracle et SQL ? Dans le domaine des bases de données, Oracle et SQL Server sont deux systèmes de gestion de bases de données relationnelles très respectés. Bien qu’elles appartiennent toutes deux à la catégorie des bases de données relationnelles, il existe de nombreuses différences entre elles. Dans cet article, nous examinerons les différences entre Oracle et SQL Server, ainsi que leurs fonctionnalités et avantages dans les applications pratiques. Tout d'abord, il existe des différences de syntaxe entre Oracle et SQL Server.

Discussion sur la stratégie d'optimisation gc de Golang Discussion sur la stratégie d'optimisation gc de Golang Mar 06, 2024 pm 02:39 PM

Le garbage collection (GC) de Golang a toujours été un sujet brûlant parmi les développeurs. En tant que langage de programmation rapide, le garbage collector intégré de Golang peut très bien gérer la mémoire, mais à mesure que la taille du programme augmente, certains problèmes de performances surviennent parfois. Cet article explorera les stratégies d'optimisation GC de Golang et fournira quelques exemples de code spécifiques. La collecte des déchets dans le garbage collector de Golang Golang est basée sur un balayage de marque simultané (concurrentmark-s

La différence entre Oracle et SQL et analyse des scénarios d'application La différence entre Oracle et SQL et analyse des scénarios d'application Mar 08, 2024 pm 09:39 PM

La différence entre Oracle et SQL et analyse de scénarios d'application Dans le domaine des bases de données, Oracle et SQL sont deux termes fréquemment mentionnés. Oracle est un système de gestion de bases de données relationnelles (SGBDR) et SQL (StructuredQueryLanguage) est un langage standardisé pour la gestion de bases de données relationnelles. Bien qu’ils soient quelque peu liés, il existe également des différences significatives. Tout d'abord, par définition, Oracle est un système de gestion de base de données spécifique, composé de

Optimisation des programmes C++ : techniques de réduction de la complexité temporelle Optimisation des programmes C++ : techniques de réduction de la complexité temporelle Jun 01, 2024 am 11:19 AM

La complexité temporelle mesure le temps d'exécution d'un algorithme par rapport à la taille de l'entrée. Les conseils pour réduire la complexité temporelle des programmes C++ incluent : le choix des conteneurs appropriés (tels que vecteur, liste) pour optimiser le stockage et la gestion des données. Utilisez des algorithmes efficaces tels que le tri rapide pour réduire le temps de calcul. Éliminez les opérations multiples pour réduire le double comptage. Utilisez des branches conditionnelles pour éviter les calculs inutiles. Optimisez la recherche linéaire en utilisant des algorithmes plus rapides tels que la recherche binaire.

See all articles