Mysql

在 MySQL 中刪除和更新大量行的最佳方法

  • July 20, 2018

我目前正在開發一個連接到 MySQL 數據庫並執行大量查詢的 REST API。

在其中一個查詢中,我碰巧必須從表中刪除一堆行,並且這些行中的每一行都有一個唯一標識符。

基本上我有兩種方法可以做到這一點:(我知道)。

  1. 建構一堆DELETE FROM table WHERE id=value;語句並按順序執行它們。
  2. 只建立一個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;

將刪除超過一周的行。

引用自:https://dba.stackexchange.com/questions/212833