2012-03-21 60 views
0

我有以下MySQL查詢:MySQL的大量行的查詢

EXPLAIN 
    SELECT 
    id, 
    name, 
    title, 
    description, 
    time 
    FROM entity 
    WHERE 
    (date_end > CURRENT_DATE 
     OR (date_end = CURRENT_DATE AND time_end >= CURRENT_TIME) 
    ) 
    AND (next_date < CURRENT_DATE 
     OR (next_date = CURRENT_DATE AND next_time <= CURRENT_TIME) 
    ) 

我什麼時候可以做,使這個查詢花費更少的時間在表處理10000+行時?

回答

0

顯示/分析解釋計劃將有助於更多的回答。

雖然我猜[date_end, time_end][next_date,next_time]加入綜合指數可能有助於

0

如果可能的話,結合DATE_END和TIME_END列到一個單一的datetime_end列,同樣爲NEXT_DATE和:NEXT_TIME列next_datetime,並建立索引在datetime_end,next_datetime。然後,您可以重寫查詢爲:

SELECT id, name, title, description, time 
    FROM entity 
    WHERE datetime_end >= now() and next_datetime <= now() 
+0

我不認爲這會工作..看來他的表有日期在一個字段,時間在另一個,如果沒有真正的日期/時間字段TIME_END,他有點卡在他已有的東西上。 – DRapp 2012-03-21 13:48:18

+0

我建議他改變他的數據庫設計 - 如果可能的話。 – 2012-03-21 13:50:24

+0

DOOhhhh ...今天早上腦痙攣...甚至沒有看到你對此的評論..有人可以說咖啡因 – DRapp 2012-03-21 13:52:18