mysql - 根据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 毫秒)?
解决方案
推荐阅读
- c# - 使用令牌验证用户并在本地调用 REST API 共享点
- javascript - 在every() 中跳过第一个元素?
- php - 尝试使用此 .htaccess 规则保护对特定 .php 文件的访问
- php - 在函数中使用 fetchAll() 时是否需要“return”语句?
- reactjs - 基于公式动态计算平方英尺
- html - ngFor给出错误'标识符未定义__type不包含这样的成员'
- c# - 如何在我的新 .Net Core 项目中修复 DbUpdateConcurrencyException?
- r - R中的日期和时间是否有过滤选项
- javascript - onchange JS函数的HTTP请求错误
- python - 在 django celery 中几分钟后由对等方重置连接