select count(T1.id)
from T1
where T1.id not in (select t1_id from T2)
вложенный селект из Т2 выполняется один раз или для каждой строчки из Т1?
Hello, jerboa!
You wrote on Thu, 16 Jun 2011 11:43:17 GMT:
> вложенный селект из Т2 выполняется один раз или для каждой строчки из Т1?
План какой?
Да и сервер.
--
With best regards, Alex Cherednichenko.
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, jerboa, Вы писали:
J>J>select count(T1.id)
J> from T1
J>where T1.id not in (select t1_id from T2)
J>
J>вложенный селект из Т2 выполняется один раз или для каждой строчки из Т1?
Вложенный селект выполняется оптимальное колличество раз.
Здравствуйте, jerboa, Вы писали:
J>вложенный селект из Т2 выполняется один раз или для каждой строчки из Т1?
Зависит от СУБД и расположения звёзд. В некоторых СУБД вложенный селект может ещё и дать разные результаты для разных строчек из T1
В данном конкретном запросе я бы не особо волновался об этой детали, поскольку даже "каждый раз" при объёмах порядка миллионов записей выполнится вполне быстро. Ну а в общем случае — выше прозвучало правильное слово "план запроса", читайте, что это такое и как его искать в вашей СУБД.
On 16.06.2011 15:43, jerboa wrote:
> select count(T1.id)
> from T1
> where T1.idnot in (select t1_idfrom T2)
>
>
>
> вложенный селект из Т2 выполняется один раз или для каждой строчки из Т1?
> сколько раз выполняется вложенный селект <message/4310776.aspx> Оценить
SQL это не определяет, так что не пытайся рассуждать на эту тему.
Обычно все СУБД выполнять подзапрос один раз, поскольку он некоррелированный.
Ещё чаще подзапроса вообще не будет как пункта в физическом плане запроса.
Posted via RSDN NNTP Server 2.1 beta