【问题标题】:How to compare date in mysql with index?如何将mysql中的日期与索引进行比较?
【发布时间】:2021-01-08 09:18:57
【问题描述】:

我的朋友们,

目前,我被困在查询字符串上,以将 MySQL 中的日期与索引进行比较。

表中created_at 类型为TimeSTAMP,值为时间字符串。 index_name = created_ato 在同一张表上。

  • 如果我尝试使用 created_at = '2020-12-21' 那么它可以使用索引,但值是空的,因为 created_at 存储在日期时间值。
  • 如果我尝试使用 date(created_at) = '2020-12-21' 那么它可以返回数据但索引无法应用,所以响应时间很慢并且超时。

谁能知道它并就如何修复它给我一些建议?

非常感谢?

【问题讨论】:

  • 请提供SHOW CREATE TABLE,查询和EXPLAIN SELECT ...——“范围”并不总是坏的;让我们看看细节。
  • 嗨@RickJames,看来我找到了解决方法的根本原因。原因是我们有索引,但它没有涵盖这种情况,所以我添加了更多索引以使其正常工作。

标签: mysql indexing


【解决方案1】:

如何使用:

created_at BETWEEN '2020-12-21 00:00:00' AND '2020-12-21 23:59:59.999'

或许:

created_at >= '2020-12-21' AND created_at  < '2020-12-21' + INTERVAL 1 DAY

【讨论】:

  • 嗨,兄弟。是的,我试过了,但是索引类型会是range,这意味着查询会很慢!
  • @Jason 这些查询应该与索引一起使用,它们将字段值与日期文字进行比较。
  • 我尝试多次运行查询但运气不佳@giorgos :(。我可以分享我的屏幕然后你可以看看吗?
  • @Jason 是的,如果你喜欢我可以看看
  • @Jason - 听起来WHERE 子句中还有其他内容。请告诉我们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-23
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 2012-03-17
相关资源
最近更新 更多