Mysql
 sql >> Datenbank >  >> RDS >> Mysql

warum sql mit 'exists' langsamer läuft als 'in' mit MySQL

Ich denke, Sie sind ein wenig verwirrt, Sie haben eine falsche Vorstellung, „EXISTS“ funktioniert schneller als „IN“, und ich versuche, Ihnen den Grund verständlich zu machen..

EXISTS gibt einen booleschen Wert zurück und gibt bei der ersten Übereinstimmung einen booleschen Wert zurück. Wenn Sie es also mit Duplikaten/Multiples zu tun haben, ist 'EXISTS' je nach Daten und Bedarf schneller auszuführen als 'IN' oder 'JOIN'.

Während „IN“ syntaktischer Zucker für ODER-Klauseln ist. Obwohl es sehr entgegenkommend ist, gibt es Probleme beim Umgang mit vielen Werten für diesen Vergleich (nördlich von 1.000). Im Falle von Duplikaten/Vielfachen überprüft „IN“ alle vorhandenen Werte, was natürlich mehr Zeit für die Ausführung benötigt als „EXISTS“. deshalb ist 'IN' immer vergleichsweise langsamer als 'EXISTS'.

Ich hoffe, dass ich Ihre Verwirrung geklärt habe.