小编dmi*_*kam的帖子

PostgreSQL LIKE和正则表达式之间的性能差异

有人能解释这些SQL之间如此大的性能差异吗?

SELECT count(*) as cnt FROM table WHERE name ~ '\*{3}'; -- Total runtime 12.000 - 18.000 ms
SELECT count(*) as cnt FROM table WHERE name ~ '\*\*\*'; -- Total runtime 12.000 - 18.000 ms
SELECT count(*) as cnt FROM table WHERE name LIKE '%***%'; -- Total runtime 5.000 - 7.000 ms
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,LIKE运算符和简单正则表达式之间的差异是两倍以上(我认为LIKE运算符内部将转换为正则表达式,并且应该没有任何区别)

那里有近13000行,"name"列是"text"类型.没有与表中定义的"name"列相关的索引.

编辑:

解释他们的每一个:

EXPLAIN ANALYZE SELECT count(*) as cnt FROM datos WHERE nombre ~ '\*{3}';

Aggregate  (cost=894.32..894.33 rows=1 width=0) (actual time=18.279..18.280 rows=1 loops=1)
  ->  Seq Scan on …
Run Code Online (Sandbox Code Playgroud)

regex sql postgresql performance sql-like

7
推荐指数
1
解决办法
3377
查看次数

标签 统计

performance ×1

postgresql ×1

regex ×1

sql ×1

sql-like ×1