Mysql
 sql >> Database >  >> RDS >> Mysql

perché sql con "esiste" è più lento di "in" usando MySQL

Penso che tu abbia un po' di confusione, ti stai facendo un'idea sbagliata, 'EXISTS' funziona più velocemente di 'IN' e sto cercando di farti capire il motivo..

EXISTS restituisce un booleano e restituirà un booleano alla prima corrispondenza. Quindi, se hai a che fare con duplicati/multipli, "EXISTS" sarà più veloce da eseguire rispetto a "IN" o "JOIN" a seconda dei dati e delle esigenze.

Considerando che "IN" è lo zucchero sintattico per le clausole OR. Sebbene sia molto accomodante, ci sono problemi nell'affrontare molti valori per quel confronto (a nord di 1.000). In caso di duplicati/multipli, "IN" controlla tutti i valori esistenti, il che richiede naturalmente più tempo per l'esecuzione rispetto a "ESISTI", ecco perché 'IN' è sempre relativamente più lento di 'EXISTS'.

Spero di aver chiarito la tua confusione.