这个工作查询非常慢(大约30秒执行),我看到JOIN子句可以提高速度。
不幸的是我没能使用它这是我的知识停止的地方..。
请,是否有任何方法来提高执行速度(使用联接或任何其他解决方案)?
SELECT
DISTINCT `club`,
COUNT(`club`),
(SELECT COUNT(*) FROM `players` juniors WHERE `category` IN ('U11', 'U13', 'U15', 'U18') AND juniors.`club` = main.`club`),
(SELECT COUNT(*) FROM `players` seniors WHERE `category` IN ('O40', 'O50', 'O60', 'O70') AND seniors.`club` = main.`club`)
FROM `players` main
GROUP BY `club`表players拥有10,000名玩家。
字段club指示它们属于哪个俱乐部。
字段category表示年龄类别( 13岁以下、40岁以上、.)。
我想要一份所有俱乐部的名单,并提供以下数据:
俱乐部名称,俱乐部中的球员人数,俱乐部中的青年生人数,俱乐部的年长者人数
非常感谢你的帮助!
发布于 2014-12-04 10:32:51
试试这个:
SELECT club, COUNT(*) AS total,
SUM(`category` IN ('U11', 'U13', 'U15', 'U18')) AS juniors,
SUM(`category` IN ('O40', 'O50', 'O60', 'O70')) AS seniors
FROM players
GROUP BY club确保在club和category列上有索引。
https://stackoverflow.com/questions/27291570
复制相似问题