On Tue, 16 Oct 2007 20:47:41 +0400, Vlad Khorsun <[EMAIL PROTECTED]> wrote:

>>>     "A" лучше натуралом перебирать. Попробуй убедить его в этом
>>
>> Я пробовал и PLAN SORT (JOIN (A NATURAL, A1 INDEX (PK_TABLE1))),
>> и даже PLAN SORT (JOIN (A NATURAL, A1 NATURAL))
>> На результат не влияет. И LEFT JOIN тоже пробовал.
>>
>> На 1.0.3 _все_ варианты плана, даже с двумя натуралами, отрабатывают 
>> максимум за 5 секунд.
>
>     Кинь мне бекап (или БД) с одной этой таблицей

У меня воспроизводится на свежесозданной базе/таблице, состоящей из одного 
только ID (он же PK).
Заливаю туда 10 тыс. записей, генератором, и вуаля.

Я тут подумал ещё раз. По идее, join по такому условию и должен считать порядка 
8848*8849/2 = 39 млн. записей (прогрессия арифметическая).
Разница только в двух "not exists" в условии. Join с группировкой, без "not 
exists" выполняется одинаково на обоих серверах.
На 2-ке "not exists" умножают число чтений на 2, получаем 78 млн., а на 1-це 
почему-то усекают число чтений всего лишь до 88 тыс., что и отрабатывает мухой.

У меня свежи воспоминания, как нарвался на разницу работы "in (select" в 1-це и 
2-ке, и теперь знаю, что этот селект выполняется в 2-ке как derived.
Может, и с exists тут какая-то похожая засада?

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

Ответить