3
我有一個Postgres性能問題。我有一個約500K行文本的表格。我需要做一些全球搜索和替換例程。這兩個UPDATE語句中的一個會比另一個更快嗎?或者他們的表現會非常相似?Postgres正則表達式替換性能
update mytable
set mycolumn = regexp_replace(mycolumn, 'ReplaceMe','WithMe', 'g');
update mytable
set mycolumn = regexp_replace(mycolumn, 'ReplaceMe','WithMe', 'g')
where mycolumn like '%ReplaceMe%';
它的寫法是,where語句不會減少查找行的時間。 Postgres很可能會讀取整個表,因爲表達式'like'%ReplaceMe%''不會使用索引(除非有trgm索引可用)。第二個將更新更少的行,並可能更快。 –
好的,我已經添加了。感謝您的信息! – PearsonArtPhoto
謝謝。我明白你的觀點。我認爲我的情況的關鍵是更新 - 沒有WHERE,我正在更新500K行,即使他們不需要它。使用WHERE,我只更新將會改變的行(約佔總數的3%,因此減少WHERE之前的幫助)。 – Paulb