在 MySQL 中为 DATETIME 字段的日期部分创建索引
在 MySQL 中,在列上使用函数进行查询,例如日期(TranDateTime),可以绕过索引,导致性能下降。要优化对 DATETIME 字段的日期部分的查询,请考虑在该部分上创建索引。
问题
包含名为 TranDateTime 的 DATETIME 字段的大型表使用以下方式查询特定日期的记录时性能缓慢:
SELECT * FROM transactionlist WHERE date(TranDateTime) = '2008-08-17'
解决方案
为了提高性能,请使用以下查询在 TranDateTime 的日期部分创建索引:
CREATE INDEX idx_TranDate ON transactionlist (DATE(TranDateTime))
该索引将允许 MySQL 根据以下查询高效检索记录: TranDateTime 字段的日期部分,优化以下查询:
SELECT * FROM transactionlist WHERE DATE(TranDateTime) = '2008-08-17'
附加注意事项
或者,为了避免在查询中使用函数,请考虑使用范围查询:
SELECT * FROM transactionlist WHERE TranDateTime BETWEEN '2008-08-17' AND '2008-08-17 23:59:59.999999';
此查询应检索 2008 年 8 月 17 日发生的所有记录,包括那些带有时间成分的。
以上是如何优化 MySQL 对 DATETIME 字段的日期部分的查询?的详细内容。更多信息请关注PHP中文网其他相关文章!