PostgreSQL允许创建“部分索引”,它基本上是带条件谓词的索引。 http://www.postgresql.org/docs/8.2/static/indexes-partial.html
在测试时,我发现它们在查询仅访问具有120k行的表中的特定12行的情况下表现非常好。
但在我们部署之前,我们应该注意哪些缺点或警告?
答案 0 :(得分:6)
主要警告是不要不恰当地使用它们。它们适用于标识符合一组条件的行,其中这些行在大型表中是少数。
以表格Orders
为例,其中包含order_status
列,并按订单状态分配您的数据,如下所示:
如果您经常查询where order_status = 'New'
以获取新订单列表,那么剩下的大部分时间只是直接通过ID引用订单,那么部分索引将是有益的。在你的120k中的12行的例子中,这更是如此。
答案 1 :(得分:4)
临:
这会减小索引的大小, 这将加快查询 使用索引。它也会加速 许多表更新操作,因为 索引不需要更新 在所有情况下
缺点:
由于这不再是真正的索引,如果对索引未涵盖的值进行完全连接或过滤,性能会随着表大小的增加而降低。