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

Hvilken er hurtigere:Korrelerede underforespørgsler eller join?

For det første er en korreleret underforespørgsel virkelig en type joinforbindelse. Der er ingen gylden regel om, hvad der producerer den bedste udførelsesplan. Hvis du er interesseret i ydeevne, skal du prøve de forskellige former for at se, hvad der virker bedst. Eller i det mindste se på udførelsesplanerne for at træffe den beslutning.

Generelt har jeg en tendens til at undgå korrelerede underforespørgsler af et par grunde. For det første kan de næsten altid skrives uden sammenhængen. For det andet gør mange forespørgselsmotorer dem til indlejrede loop-sammenføjninger (omend ved hjælp af indekser), og andre join-strategier kan være bedre. I sådanne tilfælde gør korrelerede underforespørgsler det vanskeligt at parallelisere forespørgslen. For det tredje er korrelerede underforespørgsler normalt i enten SELECT- eller WHERE-sætningerne. Jeg kan godt lide, at alle mine tabeller er i FROM-klausulen.

I MySQL er korrelerede underforespørgsler dog ofte de mest effektiv måde at lave en forespørgsel på. Dette gælder især, når du bruger en underforespørgsel i en IN klausul. Så der er ingen gylden regel.




  1. MySQL-licens og GPL

  2. Eksempler på konvertering af 'smalldatetime' til 'datetime' i SQL Server (T-SQL)

  3. MySQL returnerer første og sidste rekord for på hinanden følgende identiske resultater

  4. 3 måder at opdage, om en streng matcher et regulært udtryk i MySQL