Hello, All!

Вроде где-то мелькало описание чего-то подобного, но по трекеру найти не удалось.


При работе нижепреведенного merge по rdb$db_key происходит значительное(в десятки/сотни раз) замедление по сравнению с работой по PK, при активным пожиранием процессорного времени.

При попытке чистого повтора выяснилась следующая закономерность - чем больше кол-во полей в таблице, тем больше разница в скорости. На оригинальной, рабочей таблице, с 6 полями, разница в порядки. На тестовой, с двумя полями - 2,3 раза.


     MERGE INTO big_table t
     USING
     (
       SELECT
         ID,
         RDB$DB_KEY AS MAIN_DB_KEY
       FROM big_table t
     ) RD
     ON (t.RDB$DB_KEY = RD.MAIN_DB_KEY)
--      ON (t.ID = RD.ID)
     WHEN MATCHED THEN
       UPDATE SET t.VAL = 0;


Firebird 2.1.3.18185 CS
Firebird 2.5 RC2 SS

Это известная проблема, или стоит проверить на снапшотах?

--
-=Когда наступает завтра, то вчера становится лучше (с) С.Янковский=-
With best regards, Nikolay Ponomarenko

Ответить