我的目标是避免尝试匹配通配符的查询,因为它比匹配带有通配符的前缀的查询慢X100倍。
对于单个单词,这不是问题,但如果我有逗号分隔的单词列表怎么办?
是否有任何有效的方法可以通过前缀(使用后面的通配符)匹配这些单词而不是通过通配符?
我的意思是在这种情况下有没有办法避免匹配像%word%这样的模式?
答案 0 :(得分:2)
假设你在列表上有一个索引。否则,使用前缀匹配与非前缀匹配时,like
的性能不应慢100倍。是的,有点慢。但大多数努力应该是从页面中读取数据。
如果你有一个用逗号分隔的单词列表,那么你的数据结构就错了。您需要引入一个带有id和每个单词的新表。
一旦正确地对数据进行了规范化,就可以为查询使用适当的关系结构,而不必使用like
来连接表或查找元素。