我在postgres中有一个character varying
字段,其中包含一组以1空格分隔的字符串。例如:
--> one two three <--
个--> apples bananas pears <--
个
我使用-->
和<--
来显示字符串的开始和结束(它们不是存储字符串本身的一部分)
我需要查询这个字段来找出整个字符串是否包含某个特定的单词(例如apple)。一个可能的查询是
SELECT * FROM table WHERE thefield LIKE '%apple%'
字符串
但是它很糟糕,并且不会缩放,因为只有当模式附加到字符串的开头时,b树索引才缩放,而在我的例子中,搜索到的字符串可以定位在字段的任何地方。
你建议如何处理这个问题?
1条答案
按热度按时间tmb3ates1#
首先考虑database-normalization。
在使用当前设计时,使用trigram index支持查询。那会很快。
请参阅: