【发布时间】:2012-03-05 20:31:42
【问题描述】:
我目前有两张桌子
question
--------
id
title, character varying
answer
--------
id
question_id
votes, integer
我使用以下查询返回一个问题列表及其对应的投票数组:
SELECT question.id,
question.title,
ARRAY(SELECT votes
FROM answer
WHERE answer.question_id = question.id)
FROM question
ORDER BY question.id
输出如下:
id | title | ?column?
----+----------+-----------------------------------------------------
100 | How to | {5,2,7}
101 | Where is | {0}
102 | What is | {1}
上述查询可能需要近 50 秒才能运行数十万个问题,其中每个问题至少有 5 个答案。有没有办法优化以上内容?
【问题讨论】:
-
添加了类似于 postgres 特定语法的 postgresql 标签 b/c。如果这不是正确的评估,请随时删除标签。
-
表
answer的votes列的类型是什么?它是一个数组,还是一个整数值?我假设它是一个int值。如果它是一个数组,您的查询将不起作用。 -
请添加查询的EXPLAIN ANALYZE
标签: sql postgresql query-optimization