我刚刚在我的数据库中找到了一个有趣的部分索引:
CREATE INDEX orders_idx
ON orders
USING btree
(status)
WHERE status IS NULL;
如你所见,它完全没有选择性且完全无用,或者我错过了什么?
答案 0 :(得分:0)
如果您有按状态筛选的查询为null(如注释中所述)或需要对状态为null的条目运行维护,则此索引可能很有用。
例如,从我以前工作过的项目(没有这种类型的索引),我有一个导入过程来保存日志/队列。它将状态设置为在启动时运行,在运行时运行,并在完成时将状态设置为完成 - 但如果出现错误则将其设置为null。这将需要清理,因为其他表中的项目将无法正确设置为所需的值。我需要定期查询状态为null以诊断特定问题,或运行清理脚本,以便数据库不会充满部分导入。