使用“部分索引”有哪些优缺点?

时间:2008-11-12 09:26:08

标签: database postgresql indexing

PostgreSQL允许创建“部分索引”,它基本上是带条件谓词的索引。 http://www.postgresql.org/docs/8.2/static/indexes-partial.html

在测试时,我发现它们在查询仅访问具有120k行的表中的特定12行的情况下表现非常好。

但在我们部署之前,我们应该注意哪些缺点或警告?

2 个答案:

答案 0 :(得分:6)

主要警告是不要不恰当地使用它们。它们适用于标识符合一组条件的行,其中这些行在大型表中是少数。

以表格Orders为例,其中包含order_status列,并按订单状态分配您的数据,如下所示:

  • 新5%
  • 延期2%
  • 在Transit 5%
  • 完成85%
  • 退回3%

如果您经常查询where order_status = 'New'以获取新订单列表,那么剩下的大部分时间只是直接通过ID引用订单,那么部分索引将是有益的。在你的120k中的12行的例子中,这更是如此。

答案 1 :(得分:4)

临:

  

这会减小索引的大小,   这将加快查询   使用索引。它也会加速   许多表更新操作,因为   索引不需要更新   在所有情况下

缺点:

由于这不再是真正的索引,如果对索引未涵盖的值进行完全连接或过滤,性能会随着表大小的增加而降低。