Mysql
在 MySQL 中刪除和更新大量行的最佳方法
我目前正在開發一個連接到 MySQL 數據庫並執行大量查詢的 REST API。
在其中一個查詢中,我碰巧必須從表中刪除一堆行,並且這些行中的每一行都有一個唯一標識符。
基本上我有兩種方法可以做到這一點:(我知道)。
- 建構一堆
DELETE FROM table WHERE id=value;
語句並按順序執行它們。- 只建立一個
DELETE FROM
聲明,但有一個巨大的OR
鏈條。我沒有大量處理數據庫的經驗,任何建議或建議將不勝感激。
編輯:
我只是注意到我也有類似的事情發生在一個
UPDATE FROM
聲明中,我將很多記錄設置為相同的給定值,所以任何關於這方面的建議也會非常好。
簡單易行:
DELETE FROM tbl WHERE id IN ( 11,22,... 999 );
但是…如果您有數千個 id 要刪除,讓我們討論一下這些 id 的來源。如果他們坐在另一張桌子上,或者可以通過某種形式找到
SELECT
,那麼“多表刪除”可能是更好的方法。或者,如果您知道這些行以某種方式是連續的,那麼可能還有其他選擇。例如,要刪除“舊”行:
DELETE FROM tbl WHERE datetime < NOW() - INTERVAL 7 DAY;
將刪除超過一周的行。