所以基本上這裏是我想要做的事情:我有一個帳戶表,我有一個acct_id列表:(3,24,515,6326,17),假設我在表中有大約10萬個帳戶,除了我的給定列表中的account_id之外,刪除所有其他行的最有效方法是什麼?刪除給定列表中除行號以外的其他所有行
我想出了這樣的:
delete from account where acct_id is not in (3, 24, 515, 6326, 17);
我聽到這個查詢是緩慢的,因爲它是遞歸或東西。考慮我有的行數,那就是很慢。有什麼更好的方法來做到這一點?
你有表關係 - 從其他表的外鍵到這個嗎? 您(計劃)在該表上有多少個索引? 這些可以顯着地改變答案:即,刪除表可能不是選項,或者簡單的DELETE性能與棘手的方式相同。 知道你在優化:它可能不會被破壞。 – 2009-11-16 23:44:42
@fei我知道這個問題很老,但我可以知道你爲什麼或在哪裏聽說你的查詢很慢? – 2016-07-06 07:59:15