Maison > base de données > tutoriel mysql > Analyser l'efficacité de or et in dans MySQL avec des exemples

Analyser l'efficacité de or et in dans MySQL avec des exemples

藏色散人
Libérer: 2021-09-25 17:13:07
avant
2356 Les gens l'ont consulté

Analyser l'efficacité de or et in dans MySQL avec des exemples

L'efficacité de or et in dans mysql

Avant-propos

Aujourd'hui, j'ai rencontré un problème de blocage de site Web. Il m'a fallu quelques minutes pour m'en remettre, j'ai trouvé un sql dans un script planifié, et l'efficacité d'exécution était. très lent. Le DBA a suggéré de changer ou d'entrer, ce qui a amélioré l'efficacité des centaines de fois

Description du scénario

1 Requête d'association à deux tables
2 La quantité de données dans la table1 est proche de 1 million
3. des données dans la table2 sont proches de 9 millions
4. Le champ de titre dans les conditions de requête n'est pas indexé
5. Instruction de requête originale

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title="衣服" or b.title="裤子" or b.title="帽子" limit 0,100
Copier après la connexion

6. Instruction de requête transformée

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title IN ("衣服","裤子","帽子") limit 0,100
Copier après la connexion

Efficacité après transformation

Le temps d'exécution de l'original. SQL est de 5 secondes, après le changement, cela ne prend que 0,01 seconde

La raison

J'ai vérifié les informations et constaté que lorsque le volume de données dépasse un million et que les conditions ne sont pas indexées, l'efficacité de la requête de ou est bien inférieure à celle de in. L'efficacité de or est O(n), tandis que l'efficacité de in est O(logn). Lorsque n est plus grand, la différence d'efficacité devient plus évidente.

Apprentissage recommandé : "tutoriel vidéo 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!

Étiquettes associées:
source:segmentfault.com
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal