sql—如何高效查询mysql中特定日期范围之间的行?

e5nszbig  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(348)

我有一张table,上面有一列 created_time 数据类型为 datetime . 它也是该表上的主键之一。
现在当我尝试查询日期范围时 created_time BETWEEN :startTime AND :endTime ,它最终查看了整个表,正如我从执行计划中看到的那样。
现在,还有另一个主键列 sensor_time 数据类型为 INT 它以unix存储时间。当我在这里使用范围时,它只在数据库中查找一小部分。
请有人给我解释一下为什么这个范围不能有效地与 datetime 即使它是主键,也要键入。

nkkqxpd9

nkkqxpd91#

它也是该表上的主键之一。
休斯敦大学。这是不可能的。主键是一组具有以下特征的列:
价值观永远不会改变 NULL .
给定行中列的组合总是唯一的。
只有一个主键。
您可能有一个复合主键,由多个列组成。那样的话, datetime 筛选器将仅用于具有此限制的查询:

where created_time between ? and ?

什么时候 created_time 是主键中的第一列。否则,前面的列需要相等比较。
听起来你想在电视上再加一个专栏 datetime 将其作为索引中的第一列(如果有多个列)。

相关问题