1
UPDATE TABLE SET SOMETHING = 1 WHERE ID IN (SELECT ID FROM STORED_PROCEDURE)

表中的记录 = 2100

来自存储过程的记录 = 50

这个声明在 firebird 2.5 服务器上产生了大量的 fetches (31M!)。为什么?不应该先从存储过程中选择id,然后放在where子句中吗?我应该怎么做才能让它工作?

4

1 回答 1

1

尝试这样的事情:

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
于 2011-05-24T13:58:12.273 回答