2014-01-24 107 views
-2

我想排除表格中的記錄從00:00 AM到06:00 AMMysql查詢排除一段時間

這可行,但速度不夠快。

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

'SELECT ... WHERE moment NOT BETWEEN'2014-01-24 00:00'AND'2014-01-24 06:00'' that will $ 500 – Kermit

+0

好的我不清楚它的意思應該每天排除。 – bug

+2

'何時(瞬間)不在'00:00'和'06:00'之間..另一個$ 500 – Kermit

回答

1

沒有一種有效的索引方式來處理當前的表模式。您需要爲HOUR(moment)或只是一個布爾值添加一個額外的列,從您的數據中填充它,並適當地爲其編制索引。

+0

你其實是對的。一個小時和另一個分鐘的領域將是完美的。我們已經有一天爲一個月,一個月爲另一個月,最後一年爲另一個......但我們沒有時間做出這樣的改變。 所以我想我將不得不使用「之間」條件。 – bug

+0

您也可以將日期時間列分爲2:'日期'和'時間' –