BTREE vs GIN vs GIST指数

时间:2016-11-24 07:59:01

标签: postgresql indexing varchar postgres-9.4


我使用的是Postgres DB,我有一个名为MyObjects的表,其中有几个varchar列。值不会是分隔的单词(例如,网址,名称等)。我将根据这些专栏进行过滤。搜索某个单词将在值的开头,中间或结尾对应的行。 表本身不会很大(开头的行数大约是n * 10 ^ 3,但它会增长到大约n * 10 ^ 5行) 在这种情况下是否甚至需要索引?如果是这样 - 你建议什么样的指数?
谢谢!

1 个答案:

答案 0 :(得分:0)

如果您正在寻找可以帮助搜索模式为WHERE col LIKE '%string%'的索引,唯一的选择是使用pg_tgrm的GIN或GiST索引。

这些索引可能变得非常大,如果你搜索短子串,它们就不会有太多帮助。

要确定这样的索引是否会为您的案例中的顺序表扫描带来好处,您必须尝试一下 - 一般都无法回答。