【发布时间】:2020-09-10 23:58:35
【问题描述】:
我有如下表结构。
id (INT) index
date (TIMESTAMP) index
companyId (INT) index
这是我面临的问题
companyId 111:在 1 年的时间段内总共有 100000 行。
companyId 222:在 1 年的时间段内共有 8000 行。
如果 companyId 111 在 '2020-09-01 00:00:00' AND '2020-09-06 23:59:59' 之间有 100 行,而 companyId 222 在同一行中有 2000 行日期范围,companyId 111 比 222 慢得多,即使它在所选日期范围内的行数较少。
MySQL 不应该忽略日期范围之外的所有行以使查询变得更快吗?
这是我正在使用的查询示例:
SELECT columns FROM table WHERE date BETWEEN '2020-09-01 00:00:00' AND '2020-09-06 23:59:59' AND companyId = 111;
谢谢
【问题讨论】:
-
请发布 SHOW CREATE TABLE 表的 TEXT 结果;因此我们可以查看您是否在此时应用了任何建议。有人会帮助您获得高性能。
-
您有时间发布 SHOW CREATE TABLE 表的当前 TEXT 结果吗?这样我们就可以看到你最终得到了一个带有索引的表吗?
-
可以回复 - 不,我们会理解的。
标签: mysql select optimization