Mysql查询排除一段时间

时间:2014-01-24 17:50:41

标签: mysql

我想从00:00 AM到06:00 AM排除表格中的记录

这样可行,但速度不够快。

select * from table_x where archive != 1 
and (   
   moment not like '% 00:%' 
   and moment not like '% 01:%' 
   and moment not like '% 02:%' 
   and moment not like '% 03:%' 
   and moment not like '% 04:%' 
   and moment not like '% 05:%'
); 

字段“时刻”是日期时间类型 例如:“2014-01-24 01:02:03”

我想优化查询。

[编辑]
它必须每天从00:00 AM到06:00 AM排除。

1 个答案:

答案 0 :(得分:1)

使用当前的表架构,没有一种索引有效的方法。您需要为HOUR(moment)添加一个额外的列,或者只需要一个布尔值,从数据中填充它,并对其进行适当的索引。