这是我第一次遇到query
执行时间长的问题。问题实际上相当大,因为查询执行时间超过 20 秒,这对端点用户来说非常明显。
我有相当大的topics
(~8k)数据库,主题有它的参数(这是字典 - 我有 113 个不同的参数用于 8k 主题)。
我想展示关于这些主题的重复次数的报告。
topic table:
----------------+---------+-----------------------------------------------------
id | integer | nextval('topic_id_seq'::regclass)
topicengine_id | integer |
description | text |
topicparam_id | integer |
date | date |
topicparam table:
----------------+---------+----------------------------------------------------------
id | integer | nextval('topicparam_id_seq'::regclass)
name | text |
和我的查询:
select distinct tp.id as tpid, tp.name as desc, (select count(*) from topic where topic.topicparam_id = tp.id) as count, t.date
from topicparam tp, topic t where t.topicparam_id =tp.id
Total runtime: 22372.699 ms
结果片段:
tpid | topicname | count | date
------+---------------------------------------------+-------+---------
3823 | Topic1 | 6 | 2014-03-01
3756 | Topic2 | 14 | 2014-03-01
3803 | Topic3 | 28 | 2014-04-01
3780 | Topic4 | 1373 | 2014-02-01
有没有办法优化这个查询的执行时间?