BTREE vs GIN vs GIST 索引

Mr *_* T. 3 postgresql indexing varchar postgres-9.4


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

Lau*_*lbe 6

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

这些索引可能会变得非常大,如果您搜索短子字符串,它们并没有多大帮助。

要弄清楚在您的情况下这样的索引是否会比顺序表扫描带来好处,您必须尝试一下 - 一般情况下无法回答。