繁体   English   中英

如何有效地查询 MySQL 中特定日期范围之间的行?

[英]How to query rows between specific date range in MySQL efficiently?

我有一个表,其中某一列说created_time数据类型为datetime 它也是该表上的主键之一。

现在,当我尝试查询一个日期范围created_time BETWEEN:startTime AND:endTime时,它最终会查看整个表,正如我从执行计划中看到的那样。

现在,还有另一个数据类型为INT的主键列sensor_time ,它以unix格式存储时间。 当我在此使用范围时,它只会在数据库中查找一小部分。

请有人解释为什么范围不能有效地与datetime时间类型一起工作,即使它是主键。

它也是该表上的主键之一。

呃。 这不可能。 主键是一组具有以下特征的列:

  • 值永远不会是NULL
  • 给定行中列的组合始终是唯一的。
  • 只有一个主键

您可能有一个复合主键,由多列组成。 在这种情况下, datetime时间过滤器将仅用于具有此限制的查询:

where created_time between ? and ?

created_time是主键中的第一列时。 否则,前面的列需要相等比较。

听起来您想要datetime的第二列,并将其作为索引中的第一列(如果有多个列)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM