问题的原因是在使用SQL的LIKE语句时,性能较低。解决方法有几种选项,但从性能的角度来看,都不是很好。如果所有的前缀长度相同,可以使用LEFT函数来实现:
where left(column, 3) in ('xyz', 'abc', 'def', 'ghi')
如果使用支持正则表达式的数据库,可以使用正则表达式来实现:
where column ~ '^(xyz|abc|def|ghi)'
在这种情况下,~
是Postgres中用于正则表达式匹配的语法。另外,还某些情况下使用类似SUBSTRING的语句时也遇到了性能下降的问题。