sql >> Databasteknik >  >> RDS >> Mysql

Vilken är snabbare:korrelerade underfrågor eller gå med?

För det första är en korrelerad underfråga verkligen en typ av join. Det finns ingen gyllene regel om vilken som ger den bästa utförandeplanen. Om du är intresserad av prestanda måste du prova de olika formerna för att se vad som fungerar bäst. Eller åtminstone titta på utförandeplanerna för att fatta det beslutet.

I allmänhet tenderar jag att undvika korrelerade underfrågor av ett par anledningar. För det första kan de nästan alltid skrivas utan korrelationen. För det andra omvandlar många frågemotorer dem till kapslade loop-kopplingar (om än med index), och andra kopplingsstrategier kan vara bättre. I sådana fall gör korrelerade underfrågor det svårt att parallellisera frågan. För det tredje finns korrelerade underfrågor vanligtvis i antingen SELECT- eller WHERE-satserna. Jag gillar att alla mina tabeller finns i FROM-satsen.

I MySQL är däremot korrelerade underfrågor ofta de mest effektivt sätt att göra en fråga. Detta gäller särskilt när du använder en underfråga i en IN klausul. Så det finns ingen gyllene regel.




  1. PHP MYSQL - Infoga i utan att använda kolumnnamn men med autoinkrementfält

  2. Hur frågar man efter databasnamn i Oracle SQL Developer?

  3. Använder du Excel för din databas? Här är varför du bör uppgradera till Access

  4. nodejs mysql Fel:Anslutning förlorad Servern stängde anslutningen