Mysql
 sql >> Base de données >  >> RDS >> Mysql

pourquoi sql avec 'exists' s'exécute plus lentement que 'in' en utilisant MySQL

Je pense que vous avez un peu de confusion, vous avez une mauvaise idée, 'EXISTS' fonctionne plus vite que 'IN' et j'essaie de vous faire comprendre la raison..

EXISTS renvoie un booléen et renverra un booléen lors de la première correspondance. Donc si vous avez affaire à des doublons/multiples, 'EXISTS' sera plus rapide à exécuter que 'IN' ou 'JOIN' selon les données et les besoins.

Alors que 'IN' est du sucre syntaxique pour les clauses OR. Bien qu'il soit très accommodant, il y a des problèmes avec le traitement de nombreuses valeurs pour cette comparaison (au nord de 1 000). En cas de doublons/multiples, 'IN' vérifie toutes les valeurs existantes, ce qui prend naturellement plus de temps à exécuter que 'EXISTS', c'est pourquoi 'IN' est toujours relativement plus lent que 'EXISTS'.

J'espère avoir clarifié votre confusion.