Hi, многоуважаемый All!

Не подскажете как оптимизировать ?
есть процедурка которая ишет id-шки
по заданным параметрам есть задача
вернуть 1-й одинаковый id который
встречается для поиска по первому
и по второму параметру ...
Процедурка ищет по таблицам миллионникам
и как правило для 1-го из параметров
возвращается 5-10 id а для друго-го
может возвращать до 200-300 тыс :(

Пока решил так:

select first 1 id from (
    select id,  1 a from Search(:val1)
    union
    select id, -1 a from Search(:val2)
) group by id having sum(a) = 0

, но сам вижу хреново :( фечит всё ...

Нельзя ли как нибуть извернутся ?

PS: Кстати если последнюю строку заменить на:
    ) where  sum(a) = 0
    то стабильно падает IBE а в логе FB пишет:

    internal gds software consistency check (EVL_expt: invalid operation (232), 
file: evl.cpp line: 1105)
    XNET error (xnet:2045)  connection lost: another side is dead

    Понимаю что фигня написана, но падать :)
    
С уважением,
Константин Григорьевич.
===============
Если "низя", но очень "хотса" - то "мона" :)



--~--~---------~--~----~------------~-------~--~----~
-~----------~----~----~----~------~----~------~--~---

Ответить