sql >> Databasteknik >  >> RDS >> Mysql

Undersökningar med EXISTS vs IN - MySQL

En Explain Plan kod> skulle ha visat dig varför just du borde använda Exists . Vanligtvis kommer frågan Exists vs Count(*) . Finns är snabbare. Varför?

  • När det gäller utmaningar som presenteras av NULL:när subquery returnerar Null , för IN blir hela frågan Null . Så du måste hantera det också. Men med Exist , det är bara en falsk . Mycket lättare att hantera. Helt enkelt IN kan inte jämföra något med Null men Finns kan.

  • t.ex. Finns (Välj * från din tabell där bla ='blabla'); du får sant/falskt i det ögonblick en träff hittas/matchas .

  • I det här fallet IN tar liksom positionen för Count(*) för att välja ALLA matchande rader baserat på WHERE eftersom det jämför alla värden.

Men glöm inte heller detta:

  • FINNS körs med hög hastighet mot IN :när underfrågans resultat är mycket stort.
  • IN går före EXISTS :när underfrågans resultat är mycket små.

Referens till för mer information:



  1. Hur TRY_CONVERT() fungerar i SQL Server

  2. MySQL-datumformat – vad du behöver veta

  3. Förbättrat stöd för ombyggnader av parallell statistik

  4. Hur REGEXP_INSTR()-funktionen fungerar i MySQL