Pau*_*ulb 5 regex sql postgresql
我有一个 Postgres 性能问题。我有一个包含大约 500K 行文本的表格。我需要进行一些全局搜索和替换例程。这两个 UPDATE 语句之一会比另一个更快吗?或者它们的性能非常相似?
update mytable
set mycolumn = regexp_replace(mycolumn, 'ReplaceMe','WithMe', 'g');
update mytable
set mycolumn = regexp_replace(mycolumn, 'ReplaceMe','WithMe', 'g')
where mycolumn like '%ReplaceMe%';
Run Code Online (Sandbox Code Playgroud)
一般来说,如果您包含一个 where 语句来限制 SQL 查询,那么 SQL 查询总是会更快。所以第二个肯定应该更快。本质上,数据库能够非常快速地执行此类操作。第一个首先获取整个列表,然后通过正则表达式语句检查它。后者只需在缩短的列表上执行正则表达式即可。
然而,正如a_horse_with_no_name 指出的那样,除非有一个与 关联的索引%ReplaceMe%
,否则查询不会更快。但是,它仍然应该稍微快一些,因为通过 regex 命令处理的项目较少。
归档时间: |
|
查看次数: |
2621 次 |
最近记录: |