mysql - 计算重复值 - 帮助我的 mysql 查询非常慢

标签 mysql sql performance

假设我有一个这样的表:

Id*|value

对于每个Id,我想计算相应的存在的次数。就像这个示例数据一样:

1, a
2, b
3, a 
4, b
5, c
6, a

我想要:

1, a, 3
2, b, 2
3, a, 3
4, b, 2
5, c, 1
6, a, 3

这就是我现在所拥有的,我相信它正在工作,但速度非常慢:

SELECT t1.Id, t1.value, COUNT(t2.value) FROM `table` AS t1
LEFT JOIN `table` AS t2 ON (t1.value = t2.value)
GROUP by t1.Id

我的表包含数千行。关于如何提高这种性能有什么建议吗?

最佳答案

试试这个

SELECT t1.Id, t1.value, t2.cnt FROM Table1 AS t1
INNER JOIN 
(
  SELECT value, COUNT(value) as cnt 
    FROM Table1 GROUP BY value
) AS t2 ON (t1.value = t2.value)
ORDER BY t1.Id

或者

SELECT t1.id,t1.value,COUNT(t2.id) AS cnt FROM Table1 AS t1
INNER JOIN Table1 AS t2
   ON  t1.value = t2.value
GROUP BY t1.id,t1.value
ORDER BY t1.id

关于mysql - 计算重复值 - 帮助我的 mysql 查询非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17812589/

相关文章:

python - 简单指令 Python 实现

javascript - MongoDB - 并发响应缓慢,不同响应大小的速度差异巨大

php - PHP 表中的总和列

c# - 用两个(或更多)连接表填充数据表

javascript - 生成列表中的 $_GET 在显示页面上未定义

sql - 在 JOIN 中获得最高结果

MySQL创建表和更改(添加)表查询

mysql - 如何通过 http 从 arduino yun 发送传感器数据以与 Web api 交互

sql - Oracle SQL : How add IF condition inside FORALL LOOP

MySQL 性能 : Single table or multiple tables