我想在一个大表上运行一个查询,如下所示:
SELECT DISTINCT user FROM tasks WHERE ctime >= '2012-01-01' AND ctime < '2013-01-01' AND parent IS NULL;
tasks(ctime) 上已经有一个索引,但大多数 (75%) 行都有一个非 NULL 父级,所以这不是很有效。
我试图为这些行创建部分索引:
CREATE INDEX CONCURRENTLY task_ctu_np ON tasks (ctime, user) WHERE parent IS NULL;
但查询规划器继续选择任务(ctime)索引而不是我的部分索引。
我在服务器上使用的是 postgresql 8.2,而我的 psql 客户端是 8.1。