【问题标题】:Optimising a date query in MySQL在 MySQL 中优化日期查询
【发布时间】:2011-07-07 07:26:24
【问题描述】:

我有一系列具有 MySQL 日期和时间属性的表,其中每个表可以包含数千行。我需要能够以交互方式读取这些表,以便检索这些满足日期范围的行。所以我的 SQL 可能是:

select column_1, column_2 from table_name where createddate between '2011-01-01' and '2011-01-31';

某些查询也可能从第 x 天的时间 p 到第 z 天的时间 q 运行。

日期是 MySQL 类型的 DATE,时间是类型 TIME。

有谁知道优化此类查询的好方法是什么?我可以在日期和时间列上创建索引,使用 TIMESTAMP 作为替代等。

谢谢

摩根先生。

【问题讨论】:

  • 感谢@payne 和@three_cups_of_java。速度其实比预想的要好。

标签: java mysql datetime optimization date


【解决方案1】:

如果您在日期和时间列上有索引,MySQL 应该优化这些查询。

您可以使用 SQL EXPLAIN 命令确认这确实发生了,请参阅:http://dev.mysql.com/doc/refman/5.0/en/explain.html

【讨论】:

    【解决方案2】:

    我会推荐 DATE 列上的索引

    ALTER TABLE table_1 ADD KEY (date_col_1);
    

    您可能不需要 TIME 列上的索引。如果每个日期的行数相对较少,我会跳过它,因为它可能只是不必要的开销。

    【讨论】:

      猜你喜欢
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2023-01-28
      • 2021-06-22
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多