例如,我在網頁上列出了帶有複選框的項目,用戶可以檢查其中的很多項來執行某些操作(刪除,設置狀態(活動,非活動)等等)。用戶可以一次檢查甚至100個以上的物品。那麼,我應該執行100個或更多的SQL查詢嗎?刪除/更新選中的項目:mysql,最佳實踐
更新: E.g.在Gmail中,您可以將多個字母選中爲已讀/未讀或刪除它們。
例如,我在網頁上列出了帶有複選框的項目,用戶可以檢查其中的很多項來執行某些操作(刪除,設置狀態(活動,非活動)等等)。用戶可以一次檢查甚至100個以上的物品。那麼,我應該執行100個或更多的SQL查詢嗎?刪除/更新選中的項目:mysql,最佳實踐
更新: E.g.在Gmail中,您可以將多個字母選中爲已讀/未讀或刪除它們。
您可以從應該刪除/更新的記錄中取出id
,並使用in()
執行您喜歡的操作。例如:
delete from your_table
where id in (1, 3, 5, 99)
和
update your_table
set `state` = 'inactive'
where id in (1, 3, 5, 99)
如果用戶檢查了100個ID甚至500個,這個查詢會很慢嗎? – webprogrammer
我不這麼認爲。但是如果你有大量'id',我建議使用'between':'其中id在1到399之間' –
我不能確定id是否在1-500範圍內,大部分範圍都會介於1和1 000 000之間...... – webprogrammer
我假設你不使用異步調用更新數據庫。
的SQL可以是這個樣子:
UPDATE `articles` SET active = 1 WHERE `articles`.`id` IN (3, 4, 10, 230, 12, 32)
如果用戶檢查100個ID甚至500個,這個查詢會很慢嗎? :) – webprogrammer
不,我不知道。 100個異步調用 - 這是一個非常糟糕的主意。 – webprogrammer
速度取決於你的數據庫模式,記錄數量等,但可能沒有更快的方法來實現這一點。 –
我們需要知道更多。這並沒有給我們足夠的信息。 –
我只需要一個邏輯/算法,我不需要代碼,例如我在我的問題中寫了一個小更新。 – webprogrammer