我正在从表a1,a2,...,a20运行以下“简单查询”。每个表a1,a2,....,a20有几百万行,每个表都有相同的列,X,Y,Z。
CREATE TABLE A_bis as
SELECT
X, Y, Z
FROM a1
WHERE
Y= 3
UNION
SELECT
X, Y, Z
FROM a2
WHERE
Y= 3
UNION
SELECT
X, Y, Z
FROM a3
WHERE
Y= 3
UNION
...
SELECT
X, Y, Z
FROM a20
WHERE
Y= 3
我得到了表A_bis,但至少需要20分钟。 我想:
a)优化查询,使其更快。
b)改进代码(循环?)所以我不必为每个表a1,.... a20写一行7行来获得130行代码
答案 0 :(得分:1)
评论已回答您的问题A(基本上:在每个aX表上添加索引)。
对于问题B,您可以使用PostgreSQL inheritance:
CREATE TABLE aParent (x INT, y INT, z INT);
ALTER TABLE a1 INHERITS aParent;
ALTER TABLE a2 INHERITS aParent;
...
ALTER TABLE a20 INHERITS aParent;
然后你可以做
SELECT X, Y, Z FROM aParent WHERE Y = 3;