我需要根据特定列中的某些值从表中检索某些行,在示例中名为columnX:
select *
from tableName
where columnX similar to ('%A%|%B%|%C%|%1%|%2%|%3%')
因此,如果columnX至少包含指定的值之一(A、B、C、1、2、3),我将保留该行。
我找不到比使用类似于. 问题是对于超过一百万行的表,查询花费的时间太长。
我试过索引它:
create index tableName_columnX_idx on tableName (columnX)
where columnX similar to ('%A%|%B%|%C%|%1%|%2%|%3%')
但是,如果条件是可变的(值可能不是 A、B、C、1、2、3),我需要为每个条件使用不同的索引。
这个问题有更好的解决方案吗?
编辑:感谢大家的反馈。看起来我已经做到了这一点,可能是因为设计错误(我在一个单独的问题中发布的主题)。