1

SQL Server: Index columns used in like?反向串在Postgres的领先通配符扫描

我使用查询方法中的链接与Postgres的(0.3ms的改善)尝试了上述,它似乎只与MySQL的工作速度更快(10倍)。

MYSQL

User Load (0.4ms) SELECT * FROM users WHERE reverse_name LIKE REVERSE('%Anderson PhD') 
User Load (5.8ms) SELECT * FROM users WHERE name LIKE ('%Anderson Phd') 

POSTGRES

User Load (2.1ms) SELECT * FROM users WHERE reverse_name LIKE REVERSE('%Scot Monahan') 
User Load (2.5ms) SELECT * FROM users WHERE name LIKE '%Scot Monahan' 

做了一些谷歌搜索,但不能很明白因为我很新的数据块。任何人都可以解释为什么会发生?

回答

0

为了支持前缀匹配Postgres里为您可能需要用合适的运营商级的索引字符类型列:text_pattern_ops文字等(除非你的数据库的工作原理与“C”语言环境中,这是罕见的。)

或者您使用trigram索引来支持任何模式 - 那么您不再需要“反向”技巧。

细节在此相关的问题:

您会看到没有平凡规模的表,大规模性能的提高,只要一个指标可以用于查询。查看EXPLAIN的查询计划。

+0

谢谢欧文!使用卦和它的工作! –