Вот статья. Там же комментарии.
http://1cexpo.ru/metodiki/20-tipichnye-prichiny-neoptimalnoj-raboty-zaprosov-i-metody-optimizaczii.html В двух словах: автор статьи утверждает, что соединять вложенные запросы с реальными таблицами напрямую нельзя. Требуется предварительно поместить вложенный запрос во временную таблицу.
В комментариях мнение оспаривается. Указывается на то, что временные таблицы хранятся на диске и поэтому СУБД работает с ними порядок медленнее.
Примем за аксиому, что код запроса у нас формируется динамически (т.е. сложность запроса варьирует), и кол-во данных в выборках тоже может быть разным.
Какой способ соединения вы бы использовали и почему?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший