"WildSery"

> Строили запрос для нахождения непрерывных диапазонов ID в таблице.
> Общее кол-во записей в таблице 8848.
> Получили 2 варианта. Первый вариант работает замечательно и на 2-ке, и на 
> старом сервере с FB1, его приводить не буду.
> А вот второй....
>
> select a.id, min(a1.id)
>  from Table1 a join Table1 a1 on a1.id >= a.id
> where not exists (select * from Table1 p where p.id = a.id-1) and
>        not exists (select * from Table1 p where p.id = a1.id+1)
> group by a.id
>
> FB2.0.3
> PLAN (P INDEX (PK_TABLE1))
> PLAN (P INDEX (PK_TABLE1))
> PLAN JOIN (A ORDER PK_TABLE1, A1 INDEX (PK_TABLE1))
>
> Почти 79 млн. чтений и выполняется 11 минут.

    "A" лучше натуралом перебирать. Попробуй убедить его в этом

--
Хорсун Влад


Ответить