sql >> Database >  >> RDS >> Mysql

Welke is sneller:gecorreleerde subquery's of join?

Ten eerste is een gecorreleerde subquery echt een soort join. Er is geen gouden regel over wat het beste uitvoeringsplan oplevert. Als u geïnteresseerd bent in prestaties, moet u de verschillende vormen uitproberen om te zien wat het beste werkt. Of kijk in ieder geval naar de uitvoeringsplannen om die beslissing te nemen.

Over het algemeen vermijd ik om een ​​aantal redenen gecorreleerde subquery's. Ten eerste kunnen ze bijna altijd worden geschreven zonder de correlatie. Ten tweede veranderen veel query-engines ze in geneste loop-joins (zij het met behulp van indexen), en andere join-strategieën zijn misschien beter. In dergelijke gevallen maken gecorreleerde subquery's het moeilijk om de query te parallelliseren. Ten derde bevinden gecorreleerde subquery's zich meestal in de SELECT- of WHERE-clausules. Ik wil dat al mijn tabellen in de FROM-clausule staan.

In MySQL zijn gecorreleerde subquery's echter vaak de meest efficiënte manier om een ​​query uit te voeren. Dit is met name het geval bij het gebruik van een subquery in een IN clausule. Er is dus geen gouden regel.




  1. Zullen de prestaties van SQLite afnemen als de database groter is dan 2 gigabyte?

  2. Een databasedump maken voor specifieke tabellen en items Postgres

  3. Hoe een enkele SQL Server-verbindingsinstantie open te houden voor meerdere aanvragen in C#?

  4. Hoe schrijf ik een Oracle Insert-script met één veld als CLOB?