MYSQL SELECT查询速度很慢 - 使用JOIN可能吗?

时间:2014-12-04 10:25:05

标签: mysql performance select

这个工作查询非常慢(几乎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岁以上,......)。

我希望列出所有拥有以下数据的俱乐部:
俱乐部名称,俱乐部球员数量,俱乐部青少年数量,俱乐部老年人数量

非常感谢你的帮助!

1 个答案:

答案 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

确保您在clubcategory列上有索引。