优化从多个表中选择数据的查询

时间:2013-09-06 17:56:46

标签: mysql query-optimization

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

没有展示整个怪物,其实质是:

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报告。

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

1 个答案:

答案 0 :(得分:0)

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