【发布时间】:2020-11-18 10:51:35
【问题描述】:
我有一个 1000 万行和 3 列的 MySQL 表,格式如下:
id time num
ca65e871-d758-437e-b76f-175234760e7b 2020-11-14T23:08:05.553770Z 11112222222
...
我正在尝试在所需的时间范围内计算特定数量的出现次数,如下所示:
"SELECT COUNT(*) FROM TABLE_NAME WHERE time >'2020-11-14T23:08:05.553752Z' and num = '11112222222'"
我正在从 Python 环境 (python 3.x) 运行查询,该环境使用 pymysql 包连接到 MySQL 数据库。在 10MM 行上,此执行持续大约 2.8 秒。在time 和num 列上添加索引后,执行速度几乎快了两倍:1.5 秒。
我的问题是我可以进一步加快速度吗?
理想情况下,执行时间应该低于 200 毫秒,所以我不知道这是否可能。提前谢谢!
【问题讨论】:
-
请更具体地说明您的起点,例如概述不同的层以及它们如何影响您的查询持续时间。您应该跟踪不同的调用并检查它是查询执行、网络传输还是 Python-/pymysql-overhead。至少分片和并行查询总是有效,但会增加复杂性。
标签: mysql sql datetime query-optimization where-clause