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