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