EXPLAIN SELECT node_id
FROM node
WHERE person_id IN (SELECT person_id
FROM user
WHERE is_locked = 0);
MySql'de bulunan sonuçlar, alt sorgunun türetildiğini söylüyor. Ama değil!MySQL, alt sorguların, olmadığı zaman türetildiğini düşünüyor!
(Bu kolayca JOIN olarak yeniden yazılmış olabilir biliyorum ama MySQL bu bağımlı alt sorgu olduğunu düşündüğü neden bilmek istiyorum.)
MySQL uzmanı değilim, ancak Stackoverflow durumundaki MySQL'in tam olarak bu durumda sorgu iyileştiricisinde kör bir noktaya sahip olan birkaç kişiyi okudum. –
+1 MySQL bağımlı bir alt soruyu tespit etmekte gerçekten çok kötü ve bu konuda yapabileceğiniz hiçbir şey yok. – AndreKR
Şartları anladığımda, alt-seçim türetilir (sonuçta elde edilen bir tablo sorgudan türetilir), ancak ilişkili değil (aynı zamanda alt sorgu herhangi bir veriyi kendi dışından kullanmaz), bağımlı olarak da bilinir. Bu, sadece bir kez çalıştırılmalı, satır başına bir kez değil anlamına gelir. – RedFilter