你应该对周数进行索引吗?

时间:2014-03-12 21:01:52

标签: mysql sql indexing

我有几个大的MySQL事务表,其中包含以datetime格式存储的事务日期。

通常使用YEARWEEK()函数查询表。例如:

SELECT * WHERE YEARWEEK(workdate, 3) = '201402'

日期时间字段中已有索引(即' workdate')。是否应该添加一个额外的索引来优化查询的性能,如上面的示例?

1 个答案:

答案 0 :(得分:1)

您不需要额外的索引。嗯,希望不是。 MySQL不支持功能索引,除非是为字符串索引前缀的非常有限的情况。因此,将函数移动到常量:

WHERE workdate between STR_TO_DATE('201402 Monday', '%x%v %W') and
                       STR_TO_DATE('201402 Sunday', '%x%v %W')

workdate上的现有索引应该用于此查询。