Maison base de données tutoriel mysql Introduction aux stratégies d'optimisation des instructions SQL

Introduction aux stratégies d'optimisation des instructions SQL

Jan 28, 2020 pm 10:05 PM
sql语句 介绍 优化 策略

Introduction aux stratégies d'optimisation des instructions SQL

1. Évitez l'analyse complète de la table

Pour optimiser la requête, essayez d'éviter l'analyse complète de la table. Tout d'abord, déterminez où et commandez par Créer. un index sur les colonnes concernées.

2. Évitez de juger les valeurs nulles

Essayez d'éviter de juger la valeur nulle des champs dans la clause Where, sinon le moteur abandonnera l'utilisation de l'index et effectuez l'analyse complète de la table, telle que :

select id from t where num is null
Copier après la connexion

Vous pouvez définir la valeur par défaut 0 sur num, vous assurer qu'il n'y a pas de valeur nulle dans la colonne num de la table, puis interroger comme ceci :

select id from t where num=0
Copier après la connexion

(Tutoriel vidéo d'apprentissage gratuit recommandé : Tutoriel vidéo mysql)

3. Évitez les jugements de valeur inégaux

<🎜. >

doit être évité autant que possible dans la clause Where != ou l'opérateur <>, sinon le moteur abandonnera l'utilisation de l'index et effectuera une analyse complète de la table.

4. Évitez d'utiliser ou de logique

Vous devriez essayer d'éviter d'utiliser ou dans la clause Where pour connecter des conditions, sinon cela entraînera Le moteur abandonne l'utilisation de l'index et effectue 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. Utiliser dans et non dans la logique avec prudence

in et not in doit également être utilisée avec prudence, sinon cela entraînera une analyse complète de la table, telle que :

select id from t1 where num in(select id from t2 where id > 10)
Copier après la connexion

À ce stade, la requête externe analysera la table entière sans utiliser l'index. Il peut être modifié en :

select id from t1,(select id from t1 where id > 10)t2 where t1.id = t2.id
Copier après la connexion

À ce stade, l'index est utilisé, ce qui peut améliorer considérablement l'efficacité des requêtes.

6. Faites attention aux requêtes floues

La requête suivante provoquera également une analyse complète de la table :

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

Une requête floue peut être utilisée si elle est une condition nécessaire. Sélectionnez l'identifiant à partir de t où le nom est comme 'abc%' pour implémenter la requête floue, auquel cas l'index sera utilisé. Si la correspondance d'en-tête est une logique nécessaire, il est recommandé d'utiliser un moteur de recherche en texte intégral (Elastic search, Lucene, Solr, etc.).

7. Évitez les calculs de champs dans les conditions de requête

Vous devriez essayer d'éviter les opérations d'expression sur les champs de la clause Where, ce qui entraînera l'abandon du moteur d'utilisation de la clause Where. index. Analyse complète du tableau. 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. Évitez d'effectuer des opérations de fonction sur les champs dans les conditions de requête

doit être évité autant autant que possible dans la clause Where Les opérations de fonction sont effectuées sur les champs du champ, 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 substring(name,1,3)=&#39;abc&#39;--name 以abc 开头的id
Copier après la connexion

doit être remplacé par :

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

9. Notez le point

sur le côté gauche de la clause WHERE "=". Ne le placez pas dans la sous-section où. N'effectuez pas de fonctions, d'opérations arithmétiques ou d'autres opérations d'expression sur le côté gauche de "=" dans la phrase, sinon le système pourrait ne pas être en mesure d'utiliser l'index correctement.

10. Utilisation de l'index composite

Lors de l'utilisation d'un champ d'index comme condition, si l'index est un index composite, le premier champ de l'index doit être utilisé Ce n'est que lorsqu'il est utilisé comme condition que le système peut utiliser l'index, sinon l'index ne sera pas utilisé et l'ordre des champs doit être autant que possible cohérent avec l'ordre de l'index.

11. Ne définissez pas de requêtes irréprochables

N'écrivez pas de requêtes dénuées de sens. Par exemple, si vous devez générer une structure de table vide :

select col1,col2 into #t from t where 1=0
Copier après la connexion

Ce type de code le fera. ne renvoie rien Le jeu de résultats, mais il consommera des ressources système, doit être modifié comme suit :

create table #t(...)
Copier après la connexion

12 existe

Dans de nombreux cas, c'est le cas. une bonne idée à utiliser existe à la place de dans Select :

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

13. L'index peut également échouer

并不是所有索引对查询都有效,SQL 是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL 查询可能不会去利用索引,如一表中有字段sex,male、female 几乎各一半,那么即使在sex 上建了索引也对查询效率起不了作用。

14、表格字段类型选择

尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这会降低查询和连接的性能,并会增加存储开销。

这是因为引擎在处理查询和连接时会逐个比较字符串中每一个字符,而对于数字型而言只需要比较一次就够了。尽可能的使用varchar 代替char ,因为首先可变长度字段存储空间小,可以节省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然要高些。

15、查询语法中的字段

任何地方都不要使用select * from t ,用具体的字段列表代替“*”,不要返回用不到的任何字段。

16、索引无关优化

不使用*、尽量不使用union,union all 等关键字、尽量不使用or 关键字、尽量使用等值判断。表连接建议不超过5 个。如果超过5 个,则考虑表格的设计。(互联网应用中)表连接方式使用外联优于内联。外连接有基础数据存在。

如:A left join B,基础数据是A。A inner join B,没有基础数据的,先使用笛卡尔积完成全连接,在根据连接条件得到内连接结果集。

大数据量级的表格做分页查询时,如果页码数量过大,则使用子查询配合完成分页逻辑。

Select * from table limit 1000000, 10
Select * from table where id in (select pk from table limit100000, 10)
Copier après la connexion

相关文章教程推荐:mysql教程

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

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

Puis-je installer mysql sur Windows 7 Puis-je installer mysql sur Windows 7 Apr 08, 2025 pm 03:21 PM

Oui, MySQL peut être installé sur Windows 7, et bien que Microsoft ait cessé de prendre en charge Windows 7, MySQL est toujours compatible avec lui. Cependant, les points suivants doivent être notés lors du processus d'installation: téléchargez le programme d'installation MySQL pour Windows. Sélectionnez la version appropriée de MySQL (communauté ou entreprise). Sélectionnez le répertoire d'installation et le jeu de caractères appropriés pendant le processus d'installation. Définissez le mot de passe de l'utilisateur racine et gardez-le correctement. Connectez-vous à la base de données pour les tests. Notez les problèmes de compatibilité et de sécurité sur Windows 7, et il est recommandé de passer à un système d'exploitation pris en charge.

Comment créer des tables avec SQL Server à l'aide de l'instruction SQL Comment créer des tables avec SQL Server à l'aide de l'instruction SQL Apr 09, 2025 pm 03:48 PM

Comment créer des tables à l'aide de instructions SQL dans SQL Server: Ouvrez SQL Server Management Studio et connectez-vous au serveur de base de données. Sélectionnez la base de données pour créer le tableau. Entrez l'instruction Créer la table pour spécifier le nom de la table, le nom de la colonne, le type de données et les contraintes. Cliquez sur le bouton Exécuter pour créer le tableau.

Comment juger l'injection SQL Comment juger l'injection SQL Apr 09, 2025 pm 04:18 PM

Les méthodes pour juger l'injection de SQL incluent: la détection des entrées suspectes, la visualisation des instructions SQL originales, l'utilisation d'outils de détection, la visualisation des journaux de la base de données et l'exécution des tests de pénétration. Une fois l'injection détectée, prenez des mesures pour corriger les vulnérabilités, vérifier les correctifs, surveiller régulièrement et améliorer la sensibilisation des développeurs.

Comment vérifier les instructions SQL Comment vérifier les instructions SQL Apr 09, 2025 pm 04:36 PM

Les méthodes pour vérifier les instructions SQL sont: Vérification de la syntaxe: utilisez l'éditeur SQL ou IDE. Vérification logique: vérifiez le nom de la table, le nom de la colonne, l'état et le type de données. Vérification des performances: utilisez Expliquez ou analysez pour vérifier les index et optimiser les requêtes. Autres vérifications: Vérifier les variables, les autorisations et les requêtes de test.

MySQL optimise-t-il les tables de verrouillage MySQL optimise-t-il les tables de verrouillage Apr 08, 2025 pm 01:51 PM

MySQL utilise des verrous partagés et des verrous exclusifs pour gérer la concurrence, fournissant trois types de verrouillage: verrous de table, verrous en ligne et verrous de page. Les verrous en ligne peuvent améliorer la concurrence et utiliser l'instruction pour la mise à jour pour ajouter des verrous exclusifs aux lignes. Les verrous pessimistes supposent des conflits et les verrous optimistes jugent les données via le numéro de version. Les problèmes de table de verrouillage communs se manifestent comme une requête lente, utilisez la commande show processList pour afficher les requêtes maintenues par la serrure. Les mesures d'optimisation incluent la sélection des indices appropriés, la réduction de la portée des transactions, les opérations par lots et l'optimisation des instructions SQL.

MySQL doit-il payer MySQL doit-il payer Apr 08, 2025 pm 05:36 PM

MySQL a une version communautaire gratuite et une version d'entreprise payante. La version communautaire peut être utilisée et modifiée gratuitement, mais le support est limité et convient aux applications avec des exigences de stabilité faibles et des capacités techniques solides. L'Enterprise Edition fournit une prise en charge commerciale complète pour les applications qui nécessitent une base de données stable, fiable et haute performance et disposées à payer pour le soutien. Les facteurs pris en compte lors du choix d'une version comprennent la criticité des applications, la budgétisation et les compétences techniques. Il n'y a pas d'option parfaite, seulement l'option la plus appropriée, et vous devez choisir soigneusement en fonction de la situation spécifique.

Comment rédiger un tutoriel sur la façon de connecter trois tables dans les instructions SQL Comment rédiger un tutoriel sur la façon de connecter trois tables dans les instructions SQL Apr 09, 2025 pm 02:03 PM

Cet article présente un tutoriel détaillé sur la jonction de trois tables à l'aide de instructions SQL, guidant les lecteurs pour apprendre à corréler efficacement les données dans différentes tables. Avec des exemples et des explications de syntaxe détaillées, cet article vous aidera à maîtriser les techniques de jonction des tables en SQL, afin que vous puissiez récupérer efficacement les informations associées de la base de données.

Comment récupérer les données après que SQL supprime les lignes Comment récupérer les données après que SQL supprime les lignes Apr 09, 2025 pm 12:21 PM

La récupération des lignes supprimées directement de la base de données est généralement impossible à moins qu'il n'y ait un mécanisme de sauvegarde ou de retour en arrière. Point clé: Rollback de la transaction: Exécutez Rollback avant que la transaction ne s'engage à récupérer les données. Sauvegarde: la sauvegarde régulière de la base de données peut être utilisée pour restaurer rapidement les données. Instantané de la base de données: vous pouvez créer une copie en lecture seule de la base de données et restaurer les données après la suppression des données accidentellement. Utilisez la déclaration de suppression avec prudence: vérifiez soigneusement les conditions pour éviter la suppression accidentelle de données. Utilisez la clause WHERE: Spécifiez explicitement les données à supprimer. Utilisez l'environnement de test: testez avant d'effectuer une opération de suppression.

See all articles