EXPLAIN SELECT node_id
FROM node
WHERE person_id IN (SELECT person_id
FROM user
WHERE is_locked = 0);
Результаты в MySql, сообщающие мне, что этот подзапрос получен. Но это не так!MySQL считает, что подзапрос получен, когда он не является!
(я знаю, что это может быть легко переписан как JOIN, но я хочу знать, почему MySQL считает, что это зависит от подзапроса.)
Я не эксперт по MySQL, но я прочитал несколько человек, которые находятся здесь, в состоянии Stackoverflow, что MySQL точно слепает в своем оптимизаторе запросов именно в этой ситуации. – 2010-11-25 15:47:39
+1 Потому что MySQL действительно плохо обнаруживает зависимый подзапрос, и вы ничего не можете с этим поделать. – AndreKR 2010-11-25 15:48:27