Po pierwsze, skorelowane podzapytanie w rzeczywistości jest rodzajem złączenia. Nie ma złotej zasady, która tworzy najlepszy plan wykonania. Jeśli interesuje Cię wydajność, musisz wypróbować różne formy, aby zobaczyć, co działa najlepiej. A przynajmniej spójrz na plany egzekucyjne, aby podjąć tę decyzję.
Ogólnie rzecz biorąc, staram się unikać skorelowanych podzapytań z kilku powodów. Po pierwsze, prawie zawsze można je napisać bez korelacji. Po drugie, wiele aparatów zapytań przekształca je w sprzężenia w pętli zagnieżdżonej (choć przy użyciu indeksów), a inne strategie sprzężenia mogą być lepsze. W takich przypadkach skorelowane podzapytania utrudniają zrównoleglenie zapytania. Po trzecie, skorelowane podzapytania znajdują się zwykle w klauzulach SELECT lub WHERE. Chciałbym, aby wszystkie moje tabele znajdowały się w klauzuli FROM.
Jednak w MySQL skorelowane podzapytania są często najbardziej skuteczny sposób na wykonanie zapytania. Jest to szczególnie ważne, gdy używasz podzapytania w IN
klauzula. Tak więc nie ma złotej zasady.