查询以某物开头和结尾的字符串的性能

Mur*_*foX 1 sql algorithm performance

在查询数据库中以某物开头并以某物结尾的某些字符列时,性能是否存在差异?

SELECT * FROM table WHERE column like '%something'
SELECT * FROM table WHERE column like 'something%'
Run Code Online (Sandbox Code Playgroud)

选择一种方法而不是另一种方法有什么缺点吗?无视用户需要匹配单词的开头或结尾。
它的实现方式也许算法在某些方面有所不同?

Dav*_*ave 5

而不是创建一个新的列和索引来处理

SELECT * FROM table WHERE column like '%something'
Run Code Online (Sandbox Code Playgroud)

查询,你可以创建一个索引

CREATE INDEX rev_col_idx ON table (reverse(column) text_pattern_ops);
Run Code Online (Sandbox Code Playgroud)

然后将上面的查询重写为

SELECT * FROM table WHERE reverse(column) like reverse('%something')
Run Code Online (Sandbox Code Playgroud)

这将实现同样的事情。