How to optimize DELETE .. NOT IN .. SUBQUERY in Firebird
问题 I've this kind of delete query: DELETE FROM SLAVE_TABLE WHERE ITEM_ID NOT IN (SELECT ITEM_ID FROM MASTER_TABLE) Are there any way to optimize this? 回答1: You can use EXECUTE BLOCK for sequential scanning of detail table and deleting records where no master record is matched. EXECUTE BLOCK AS DECLARE VARIABLE C CURSOR FOR (SELECT d.id FROM detail d LEFT JOIN master m ON d.master_id = m.id WHERE m.id IS NULL); DECLARE VARIABLE I INTEGER; BEGIN OPEN C; WHILE (1 = 1) DO BEGIN FETCH C INTO :I; IF