这个工作查询非常慢(几乎30秒执行),我看到JOIN子句可以提高速度 不幸的是我没有使用它,这是我的知识停止的地方......
请问,有没有办法提高执行速度(使用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岁以上,......)。
我希望列出所有拥有以下数据的俱乐部:
俱乐部名称,俱乐部球员数量,俱乐部青少年数量,俱乐部老年人数量
非常感谢你的帮助!
答案 0 :(得分:1)
试试这个:
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
列上有索引。