我有一张table,上面有一列 created_time
数据类型为 datetime
. 它也是该表上的主键之一。
现在当我尝试查询日期范围时 created_time BETWEEN :startTime AND :endTime
,它最终查看了整个表,正如我从执行计划中看到的那样。
现在,还有另一个主键列 sensor_time
数据类型为 INT
它以unix存储时间。当我在这里使用范围时,它只在数据库中查找一小部分。
请有人给我解释一下为什么这个范围不能有效地与 datetime
即使它是主键,也要键入。
1条答案
按热度按时间nkkqxpd91#
它也是该表上的主键之一。
休斯敦大学。这是不可能的。主键是一组具有以下特征的列:
价值观永远不会改变
NULL
.给定行中列的组合总是唯一的。
只有一个主键。
您可能有一个复合主键,由多个列组成。那样的话,
datetime
筛选器将仅用于具有此限制的查询:什么时候
created_time
是主键中的第一列。否则,前面的列需要相等比较。听起来你想在电视上再加一个专栏
datetime
将其作为索引中的第一列(如果有多个列)。