我有几个大的MySQL事务表,其中包含以datetime格式存储的事务日期。
通常使用YEARWEEK()函数查询表。例如:
SELECT * WHERE YEARWEEK(workdate, 3) = '201402'
日期时间字段中已有索引(即' workdate')。是否应该添加一个额外的索引来优化查询的性能,如上面的示例?
答案 0 :(得分:1)
您不需要额外的索引。嗯,希望不是。 MySQL不支持功能索引,除非是为字符串索引前缀的非常有限的情况。因此,将函数移动到常量:
WHERE workdate between STR_TO_DATE('201402 Monday', '%x%v %W') and
STR_TO_DATE('201402 Sunday', '%x%v %W')
workdate
上的现有索引应该用于此查询。