我可以使用此查询选择星期一有日期的所有订单:

SELECT * from orders WHERE strftime("%w", date)="1";

但据我所知,使用索引不能加快速度,因为必须计算每行 strftime

我可以添加一个存储工作日的附加字段,但我想避免它。是否有使用索引的解决方案或我错了,这个查询实际上工作正常? (这意味着它不必遍历每一行来计算结果。)

有帮助吗?

解决方案

如果你想要所有星期一,你需要进行现场或顺序扫描。您可以做的是计算一年中所有星期一的实际日期。条件 WHERE日期IN('2009-03-02','2009-02-23',...)将使用索引

其他提示

或者作为vartec建议的替代方案,构建一个日历表,其中仅包含一年中每一天的日期和日期名称(均已编入索引),然后通过对此表执行JOIN来执行查询。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top