首页 > 解决方案 > 根据MySQL中另一列的条件加快一列的计数(不同)

问题描述

我有一个 1000 万行和 3 列的 MySQL 表,格式如下:

+---------------------------------------------------------------------------------------+
|     id                                     time                               num     |
+---------------------------------------------------------------------------------------+
| ca65e871-d758-437e-b76f-175234760e7b  2020-11-14 23:08:05.553770          11112222222 |
| ...                                                                                   |
+---------------------------------------------------------------------------------------+

为了运行下面的第一个查询,我对表进行了索引(num, time),它的运行速度非常快(在 1000 万行表上 <5 毫秒):

SELECT COUNT(*) 
FROM TABLE_NAME 
WHERE time >= '2020-11-14 23:08:05.553752' AND num = 11112222222

count(distinct)但是,考虑到另一列的条件,我还需要在一个列上执行子句,如下所示:

SELECT COUNT(DISTINCT time) 
FROM TABLE_NAME 
WHERE time >= '2020-11-14 23:08:05.553752' AND num = 11112222222

这运行了大约 20 毫秒,这也非常快,但我想知道有没有办法让它更快(可能类似于第一个查询的执行时间 - 不到 5 毫秒)?

标签: mysqlsqldatetimequery-optimizationwhere-clause

解决方案


推荐阅读