我有一个包含一列和一亿行文本的表。 文字很简单,用1到5个单词的句子。
我的目标是拥有一个可以与自动完成功能一起使用的超快查询。所以用户输入并尽可能快地得到结果。
我尝试了许多不同的索引和tsvector
功能。
答案 0 :(得分:3)
如果要将整个文本与前缀匹配,则SQL查询将为
SELECT words FROM phrases WHERE words LIKE 'user input%';
使用text_pattern_ops
运算符类的常规B树索引应该可以解决问题。
如果短语太长而无法编入索引,或者您想节省空间,则索引和查询只是一个前缀:
CREATE INDEX ON phrases (substr(words, 1, 50) text_pattern_ops);
然后用
查询SELECT words FROM phrases WHERE substr(words, 1, 50) LIKE 'user input%';