sql >> Databasteknik >  >> RDS >> Mysql

varför sql med 'exists' körs långsammare än 'in' med MySQL

Jag tror att du har lite förvirring, du har en felaktig uppfattning, 'FINNS' fungerar snabbare än 'IN' och jag försöker få dig att förstå orsaken.

EXISTS returnerar en boolean och kommer att returnera en boolean vid den första matchen. Så om du har att göra med dubbletter/multiplar, kommer 'EXISTS' att vara snabbare att köra än 'IN' eller 'JOIN' beroende på data och behov.

Medan 'IN' är syntaktisk socker för OR-satser. Även om det är väldigt tillmötesgående, finns det problem med att hantera många värden för den jämförelsen (norr om 1 000). Vid dubbletter/multipler kontrollerar 'IN' alla värden som finns vilket naturligtvis tar mer tid att köra än 'FINNS', det är därför 'IN' alltid är jämförelsevis långsammare än 'FINNS'.

Jag hoppas att jag klargjorde din förvirring.



  1. Ampersand (&) operator i en SQL Server WHERE-klausul

  2. Felsök PDO mySql infoga NULL i databasen istället för tomt

  3. MYSQL:välj en del av texten och klipp ut den baserat på punktens plats

  4. Välj max av en summa av två kolumner