使用“部分索引”的优点和缺点是什么?
问题描述:
PostgreSQL允许“部分索引”,其基本上与条件谓词索引的创建。 http://www.postgresql.org/docs/8.2/static/indexes-partial.html使用“部分索引”的优点和缺点是什么?
在测试时,我发现它们在查询只访问具有120k行的表中的特定12行的情况下表现非常好。
但我们部署在此之前,还有我们应该意识到的任何缺点或警告?
答
临:
这降低了指数, 这将加快查询那些 使用索引的大小。这也将加快 许多表更新操作,因为 索引并不需要在所有情况下
进行更新
缺点:
因为这不再是一个真正的指数,如果你这样做完全加入或者对索引未涉及的值进行过滤时,性能会随着表大小的增长而降低。
答
主要需要注意的是不要不恰当地使用它们。它们对于识别符合一组标准的行很有用,其中这些行在大表中是少数。
以一个表Orders
例如用order_status
列和数据的分配在顺序状态如下:
- 新5%
- 延期交货2%
- 运输中5%
- 已完成85%
- 已退回3%
如果您经常查询where order_status = 'New'
获得的新订单列表,然后大部分只是直接引用ID订单剩下的时间里,然后部分指标将是有益的。在120k中12行的例子中,这更加真实。
+1。有时在生产环境中,索引会作为性能调整的一部分添加。局部索引允许DBA调谐为特定角的情况下,如(ORDER_STATUS =“新”)不同时充分命中正常索引。 – 2010-05-24 15:50:17