簡體   English   中英

mysql UPDATE,性能WHERE檢查vs不檢查

[英]mysql UPDATE, performance WHERE check vs no check

我有一個非常長的表,具有10000行。 9500行的列設置為1,其余500的列設置為0。我想更新表,以便所有行的列設置為1。

使用WHERE column = 0會更快嗎?或者跳過WHERE並僅更新全部會更好嗎? 我正在使用准備好的聲明。

  • 謝謝

這是個有趣的問題。 通常,我想說where column = 0更好。 它永遠不會惡化到可察覺的水平,但是在MySQL中卻可能沒有什么不同。

在列上沒有索引的情況下,查詢將仍然需要讀取所有行,以標識需要更新的行。 因此,無論如何查詢都將進行全表掃描。 即使具有索引,優化器仍可能選擇全表掃描,除非您在column上具有聚集索引。

然后,進行更新的開銷就是維護日志。 我很確定MySQL僅將實際更改記錄到數據庫中。 換句話說,它還是在進行比較。 因此,MySQL不會將值“重新更新”為相同的值。 注意:並非所有數據庫都以這種方式運行。

話雖如此,如果您打算這樣做,我將始終將where column = 0 在10,000行中,性能不是大問題。 我認為代碼的清晰度更高。 另外,我為多個數據庫編寫代碼,所以我更喜歡編寫在所有數據庫上都能正常工作的代碼。

通過我的腳本執行時間測量,對於MariaDB,該查詢的結果幾乎相同(我的意思是結果和時間)。

我也會在MySQL上嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM