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

hvorfor sql med 'exists' kører langsommere end 'in' ved hjælp af MySQL

Jeg tror, ​​du har en lille forvirring, du har en forkert idé, 'FINDER' virker hurtigere end 'IN', og jeg prøver at få dig til at forstå årsagen.

EXISTS returnerer en boolean og returnerer en boolean på den første kamp. Så hvis du har med dubletter/multipletter at gøre, vil 'EXISTS' være hurtigere at udføre end 'IN' eller 'JOIN' afhængigt af data og behov.

Hvorimod 'IN' er syntaktisk sukker for OR-klausuler. Selvom det er meget imødekommende, er der problemer med at håndtere mange værdier til den sammenligning (nord for 1.000). I tilfælde af dubletter/multipler kontrollerer 'IN' alle de værdier, der eksisterer, hvilket naturligvis bruger mere tid at udføre end 'FINDER', det er derfor 'IN' altid er forholdsvis langsommere end 'EKSISTERER'.

Jeg håber, at jeg har afklaret din forvirring.



  1. Django-forespørgsel i One to Many-forholdet

  2. rake afbrudt! kan ikke indlæse en sådan fil -- mysql2/mysql2 på El Capitan

  3. Henter rækker tilføjet sidste time

  4. Langsom placeringsbaseret søgeresultatforespørgsel