Обновление где id в хранимой процедуре - огромное количество выборок - PullRequest
1 голос
/ 20 апреля 2011
UPDATE TABLE SET SOMETHING = 1 WHERE ID IN (SELECT ID FROM STORED_PROCEDURE)

Записи в TABLE = 2100

Записи из хранимой процедуры = 50

Этот оператор содержит огромное количество выборок (31M!) На сервере Firebird 2.5.Зачем?Разве он не должен сначала выбрать идентификаторы из хранимой процедуры, а затем поместить их в предложение where?Что я должен сделать, чтобы это работало?

1 Ответ

1 голос
/ 24 мая 2011

Попробуйте что-то вроде этого:

declare variable myid integer;    
begin
    for
        select id from stored_procedure into :myID
    do begin
      update table set something = 1 where table.id = :myID;
    end
end
...