【发布时间】:2016-06-05 01:11:40
【问题描述】:
我有一个 MySQL 数据库,其中包含大约 160.000 个条目的表。当我查询以下查询时,大约需要 0.5 秒的执行时间:
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) > 18;
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) < 3;
像这样将语句组合成一个查询
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) > 18 OR EXTRACT(HOUR FROM date) < 3;
执行需要很长时间。事实上,我还没有看到查询完成执行并在大约 20 分钟后取消它。
当我将 OR 更改为 AND 时,例如:
SELECT * FROM table WHERE EXTRACT(HOUR FROM date) > 10 AND EXTRACT(HOUR FROM date) < 19;
执行时间再次以毫秒为单位。
谁能解释一下这个奇怪的行为,也许可以提出一个用 OR 查询这两个条件的解决方案。
提前谢谢你
【问题讨论】:
标签: mysql sql conditional-statements execution-time