【发布时间】:2020-10-17 11:36:48
【问题描述】:
我正在尝试运行EXPLAIN ANALYZE,但它根本无法完成,因为它太慢了。如果是,我会发布结果,但现在,这里是EXPLAIN。
查询:
EXPLAIN SELECT
*
FROM
"Posts" AS "Post"
WHERE
(
"Post"."featurePostOnDate" > '2020-06-25 19:28:07.816 +00:00'
OR (
"Post"."featurePostOnDate" IS NULL
AND "Post"."userId" IN (6863684)
)
)
AND "Post"."private" IS NULL
ORDER BY
"Post"."featurePostOnDate" DESC NULLS LAST,
"Post"."createdAt" DESC NULLS LAST
LIMIT 10;
结果:
Limit (cost=0.56..110.92 rows=10 width=1136)
-> Index Scan using posts_updated_following_feed_idx on "Posts" "Post" (cost=0.56..284949.60 rows=25819 width=1136)
Filter: (("featurePostOnDate" > '2020-06-25 19:28:07.816+00'::timestamp with time zone) OR (("featurePostOnDate" IS NULL) AND ("userId" = 6863684)))
索引:
CREATE INDEX "posts_updated_following_feed_idx" ON "public"."Posts" USING btree (
"featurePostOnDate" DESC NULLS LAST,
"createdAt" DESC NULLS LAST
)
WHERE
private IS NULL;
【问题讨论】:
-
请edit您的问题并添加使用
explain (analyze, buffers, format text)生成的execution plan 不只是一个“简单”解释(就像你已经拥有的那样) -
@a_horse_with_no_name 仍在等待查询完成,但我认为它正在关闭数据库服务器,因此它可能永远不会完成。如前所述,如果有,我会更新,但如果没有发生,我会寻求任何建议。
标签: postgresql indexing database-performance