postgresql – 具有异构数据类型的3个字段的多列索引
我有一个包含3个字段的postgres表:
> a:postgis几何 我有一个涉及所有这些问题的查询.我想添加一个多列索引来加速它,但我不能因为它们的性质而不能将3个字段放在同一个索引下. 这种情况下的策略是什么?添加3个索引gist,gin和btree以及postgres将在查询期间使用它们吗? 解决方法
单列索引
首先,Postgres可以在单个查询中使用位图索引扫描非常有效地组合多个索引.大多数情况下,Postgres将选择最具选择性的索引(或两个并将它们与位图索引扫描结合起来)并在位图堆扫描后过滤其余的索引.一旦结果集足够窄,扫描另一个索引就没有效率. 多列索引 拥有完美匹配的multicolumn index仍然更快,但不是数量级. 要包含整数列,首先安装附加模块 CREATE EXTENSION btree_gin; 然后你应该能够创建你的多列索引: CREATE INDEX tbl_abc_gin_idx ON tbl USING GIN(a,b,c); 索引列的顺序与GIN索引无关. Per documentation:
最近邻搜索 由于您包含PostGis几何类型,因此您可能想要执行nearest neighbour search,您需要GiST索引.在这种情况下,我建议两个索引: CREATE INDEX tbl_ac_gist_idx ON tbl USING GiST(a,c); -- geometry type CREATE INDEX tbl_bc_gin_idx ON tbl USING GIN(b,c); 您可以将整数列c添加到其中一个或两个.这取决于. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |