sql >> Database >  >> RDS >> Mysql

waarom sql met 'exists' langzamer werkt dan 'in' met MySQL

Ik denk dat je een beetje in de war bent, je hebt een verkeerd idee, 'EXISTS' werkt sneller dan 'IN' en ik probeer je de reden duidelijk te maken..

EXISTS retourneert een boolean en retourneert een boolean bij de eerste overeenkomst. Dus als je te maken hebt met duplicaten/veelvouden, is 'EXISTS' sneller uit te voeren dan 'IN' of 'JOIN', afhankelijk van de gegevens en de behoeften.

Terwijl 'IN' syntactische suiker is voor OR-clausules. Hoewel het erg meegaand is, zijn er problemen met het omgaan met veel waarden voor die vergelijking (ten noorden van 1.000). In het geval van duplicaten/veelvouden controleert 'IN' alle bestaande waarden, wat natuurlijk meer tijd kost om uit te voeren dan 'EXISTS', daarom is 'IN' altijd relatief langzamer dan 'EXISTS'.

Ik hoop dat ik je verwarring heb opgehelderd.



  1. Hoe de maximale waarde van het kolomtype integer te krijgen dat is opgeslagen als typetekst in de sqlite-tabel?

  2. Oracle 9i Developer Suite 2.0 installeren op Windows

  3. print start- en einddatum in één rij voor continue of overlappende datumbereiken in Oracle SQL

  4. Converteer een maandnummer naar de maandnaam in SQL Server (T-SQL)