0

我有一个查询需要几分钟才能运行,我正在尝试查看是否有优化它的方法,或者是否只需要将其分解为不同的查询。

不显示整个怪物,本质是:

SELECT
u.id,
u.email,
(select count(*) from photos where u.id = user_id) as num_of_photos,
(select count(*) from activity_log where type = 1 and u.id = user_id) as num_logins,
(select count(*) from activity_log where type = 4 and u.id = user_id) as num_help_views,
(select count(*) from activity_log) as activity_rating
FROM
user as u
ORDER BY activity_rating DESC

大约有 20 个子选择提取关于每个用户的不同数据,最终输出到 CSV 报告。

到目前为止,数据库中只有几千个用户,查询是不切实际的。是否可以进行任何优化?

4

1 回答 1

0

我的猜测:activity_log 和其他子表上没有索引。

于 2013-09-10T15:30:38.600 回答