我有一張桌子可容納大約50M行。我想執行一個簡單的UPDATE查詢:Postgres - 沒有實際的更新,是否有副作用?
UPDATE the_table SET flag = true;
對於這些行的99%,該標誌已被設置爲true。所以只有1%的行必須改變。
我的問題是:是Postgres足夠聰明知道這一點?或者Postgres會改變這些99%的行,這將導致典型的過程,比如WAL,自動真空,重新索引,同步到奴隸......,對於整個表而言,而不僅僅是這些1%的行。
換句話說,下面的查詢是否更安全?
UPDATE the_table SET flag = true WHERE flag = false;
它將更新所告知的行數。在你沒有'where'的情況下它會更新所有的行,所以肯定要去第二條語句 –
必須使用where子句,否則所有的行都會受到影響。 – klin