我开始对PostgreSQL索引有了更好的把握,但我遇到了OR条件的问题,我不知道如何优化我的索引以获得更快的查询.
我有6个条件,当单独运行时,似乎成本很低.以下是修剪查询的示例,包括查询计划计算时间.
(注:我没有输出低于降低复杂起见,这些查询的实际查询计划,但它们都使用nested loop left joins,并index scans作为我会正确的索引想到如果有必要,我可以包括一个更有意义的响应查询计划. .)
EXPLAIN ANALYZE SELECT t1.*, t2.*, t3.*
FROM t1 LEFT JOIN t2 on t2.id = t1.t2_id LEFT JOIN t3 ON t3.id = t1.t3_id
WHERE (conditions1)
LIMIT 10;
QUERY PLAN
-------------------------------------------------------------------------------------
Limit (cost=0.25..46.69 rows=1 width=171) (actual time=0.031..0.031 rows=0 loops=1)
EXPLAIN ANALYZE SELECT t1.*, t2.*, t3.*
FROM t1 LEFT JOIN t2 on t2.id = t1.t2_id LEFT JOIN t3 ON t3.id = t1.t3_id
WHERE (conditions2)
LIMIT 10;
QUERY PLAN
------------------------------------------------------------------------------------- …Run Code Online (Sandbox Code Playgroud)