可以說我有3億用戶在我的mysql數據庫(innodb
)。其中一些有username
設置,而其中一些不(用戶名爲空),並且可以說60%不是空(具有實際的varchar值)。沒有一個WHERE子句,只是咧空他們都 -MySQL更新性能有或沒有的地方是NULL
如果我想將所有3個億用戶的用戶名爲空,將
UPDATE users SET username = null WHERE username IS NOT NULL
表現比
UPDATE users SET username = null
更好?
我知道WHERE在設置實際值時總是執行得更快,但是不知何故空字段讓我想到了這一點。
如果您有用戶名索引,WHERE會更好,否則應執行相同的操作,因爲需要執行完整掃描。在這種情況下,賦值爲null或值不會有任何區別。 –
閱讀解釋查詢以查詢性能的自我評估。 – manu
查看這個小提琴以獲得更好的理解:https://www.db-fiddle.com/#&togetherjs=De4TPIMgUO – manu