On Sun, 13 Jan 2008 13:39:53 +0300, St. Alex <[EMAIL PROTECTED]> wrote:

> select *
> from schet s
> where
>  s.id_client in
> (
>    select id_client
>    from executors e
>    where e. id_sotrudnik=:ID_SOTRUDNIK
> ), который на старой версии отрабатывал порядка миллисекунд, на 2.0 это 
> занимало около 3 минут... Прищлось изголятся с созданием промежуточных 
> искусственных таблиц и т.п.

Какие ещё промежуточные таблицы?!
На скруле, да и тут по-моему, уже упоминали, что IN (SELECT...) в 2.х работает 
как derived, а потому может круто тормознуть.
Всего-то нужно было правильно написать:

select *
   from schet s
   where exists
(
   select *
     from executors
     where id_sotrudnik = :ID_SOTRUDNIK and id_cliend = s.id_client
)

-- 
Сергей Смирнов.

Ответить