我可以使用此查询选择星期一有日期的所有订单:
SELECT * from orders WHERE strftime("%w", date)="1";
但据我所知,使用索引不能加快速度,因为必须计算每一行strftime
。
我可以添加一个存储工作日的附加字段,但我想避免它。是否有使用索引的解决方案或我错了,这个查询实际上工作正常? (这意味着它不必遍历每一行来计算结果。)
答案 0 :(得分:1)
如果你想要所有星期一,你需要进行现场或顺序扫描。您可以做的是计算一年中所有星期一的实际日期。条件WHERE date IN ('2009-03-02', '2009-02-23', ...)
将使用索引
答案 1 :(得分:1)
或者作为vartec建议的替代方案,构建一个日历表,其中仅包含一年中每一天的日期和日期名称(均已编入索引),然后通过对此表执行JOIN来执行查询。