首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何最佳地按两列分组和计数?

如何最佳地按两列分组和计数?
EN

Stack Overflow用户
提问于 2019-02-07 20:57:31
回答 1查看 39关注 0票数 0

我想对一个大表进行数据计数,该表有两个值相同的列。但以最好的方式

我有一个产品关联表,我想要计算产品与另一个产品关联的次数,我想知道哪些产品关联最多,但是我的表太大了,我想知道是否有优化的解决方案

我的表格:

代码语言:javascript
复制
mysql> SELECT * FROM user_association_data_2019_02;
+----+------------+-------------+---------------------+---------+
| id | product_id | association | last_modified       | user_id |
+----+------------+-------------+---------------------+---------+
|  6 |       1096 | 1355        | 2019-02-04 11:42:07 |    2940 |
| 17 |       1096 | 1758        | 2019-02-04 11:54:10 |    2940 |
| 19 |       1355 | 1758        | 2019-02-04 11:54:15 |    2940 |
| 24 |       1096 | 1758        | 2019-02-04 11:55:31 |    2940 |
| 37 |       1355 | 1758        | 2019-02-04 11:58:54 |    2940 |
| 53 |       1096 | 463         | 2019-02-04 16:38:49 |    2940 |
| 56 |       1758 | 560         | 2019-02-05 10:11:43 |    2940 |
| 57 |       1096 | 560         | 2019-02-05 10:11:45 |    2940 |
| 65 |       1096 | 560         | 2019-02-05 11:10:13 |    2940 |
| 70 |       1758 | 560         | 2019-02-05 12:11:50 |    2940 |
| 74 |       1758 | 560         | 2019-02-05 12:13:27 |    2940 |
| 75 |       1207 | 560         | 2019-02-05 12:13:30 |    2940 |
| 77 |       1096 | 560         | 2019-02-05 12:14:17 |    2940 |
| 79 |       1207 | 1355        | 2019-02-05 14:04:17 |    2940 |
| 81 |       1355 | 560         | 2019-02-06 14:17:25 |    2940 |
| 82 |       1096 | 560         | 2019-02-06 14:17:26 |    2940 |

这解决了我的问题

代码语言:javascript
复制
mysql> SELECT product_id, association, count(*) as total FROM user_association_data_2019_02 GROUP BY product_id, association;
+------------+-------------+-------+
| product_id | association | total |
+------------+-------------+-------+
|       1096 | 1355        |     1 |
|       1096 | 1758        |     2 |
|       1096 | 463         |     1 |
|       1096 | 560         |     4 |
|       1207 | 1355        |     1 |
|       1207 | 560         |     1 |
|       1355 | 1758        |     2 |
|       1355 | 560         |     1 |
|       1758 | 560         |     3 |
+------------+-------------+-------+

但是我不认为这个是优化的,怎么优化这个计数呢?

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 21:00:49

可能没有其他方法可以重写查询。但是您可以通过添加索引来提高性能:

代码语言:javascript
复制
ALTER TABLE t ADD INDEX ix_productid_association (product_id, association);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54573902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档