我有两个表格,假设它们是
CREATE TABLE a (
a_a BIGINT,
a_b BIGINT,
a_c BIGINT,
a_someval NUMERIC
);
CREATE TABLE b (
b_a BIGINT,
b_b BIGINT,
b_c BIGINT,
b_someval NUMERIC
);
我是以下面的方式加入他们的:
SELECT *
FROM a
JOIN b ON (a.a_a = b.b_a AND a.a_b = b.b_b AND a.a_c = b.b_c)
;
解释展示出,规划者需要按照在JOIN中使用的列对那些表进行排序。
是否有一种方式可以预先对这些表进行排序,以便它们每次加入时不会被排序?
一些可能重要的事情:
- 查询使用了两个表的全部内容(而不是一个小子集) - 每个表中都有数亿行 - 表的内容将不会更改 - 这两个表都是在用于分析需求的生产数据库快照中生成的(CREATE TABLE x AS SELECT…)