PostgreSQL:最快的自动完成索引
PostgreSQL: Fastest Index For Autocomplete
我有一个 table 包含一列和 1 亿行文本。
课文是简单的1-5个单词的句子。
我的目标是拥有一个可以与自动完成一起使用的超快速查询。所以用户输入,我尽快得到结果。
我尝试了许多不同的索引和 tsvector
功能。
- 什么是适合我需要的 solution/combination?
- 我可以使用哪些其他解决方案来实现我的目标并相对快速地设置?
如果你想用前缀匹配完整的文本,SQL 查询将是
SELECT words FROM phrases WHERE words LIKE 'user input%';
带有 text_pattern_ops
运算符 class 的常规 B-Tree 索引应该可以解决问题。
如果词组太长无法编入索引或者您想保存space,索引和查询只是一个前缀:
CREATE INDEX ON phrases (substr(words, 1, 50) text_pattern_ops);
然后用
查询
SELECT words FROM phrases WHERE substr(words, 1, 50) LIKE 'user input%';
我有一个 table 包含一列和 1 亿行文本。 课文是简单的1-5个单词的句子。
我的目标是拥有一个可以与自动完成一起使用的超快速查询。所以用户输入,我尽快得到结果。
我尝试了许多不同的索引和 tsvector
功能。
- 什么是适合我需要的 solution/combination?
- 我可以使用哪些其他解决方案来实现我的目标并相对快速地设置?
如果你想用前缀匹配完整的文本,SQL 查询将是
SELECT words FROM phrases WHERE words LIKE 'user input%';
带有 text_pattern_ops
运算符 class 的常规 B-Tree 索引应该可以解决问题。
如果词组太长无法编入索引或者您想保存space,索引和查询只是一个前缀:
CREATE INDEX ON phrases (substr(words, 1, 50) text_pattern_ops);
然后用
查询SELECT words FROM phrases WHERE substr(words, 1, 50) LIKE 'user input%';