0
這裏是一個需要優化查詢:如何優化包含DATE_ADD()的mysql查詢?
Scans: 527676 records...
Returns: 496 records...
SELECT * FROM customers c
WHERE DATE_ADD(c.`custdate` ,INTERVAL -5 HOUR) BETWEEN '2011-09-14 00:00:00' AND '2011-09-14 23:59:59'
AND c.`custtype`='L'
這是不使用DATE_ADD相同:
Scans: 801 records...
Returns: 481 records...
SELECT * FROM customers c
WHERE c.`custdate` BETWEEN '2011-09-14 00:00:00' AND '2011-09-14 23:59:59'
問題是我應該如何優化使用DATE_ADD此查詢()函數?沒有使用DATE_ADD它拿起我的索引和查詢是好的。
在此等待幫助。
感謝,
Raheel
完全一致 - MySQL不能使用,當你有問題的領域進行功能指標,所以總是嘗試在過濾條件而不是字段上執行該功能。然後,MySQL可以使用可用的索引 –
...此外,對「BETWEEN」子句中的每個值執行「DATE_ADD」函數是完全可能的,因爲MySQL會盡可能地優化那些值。例如。 「c.'custdate' BETWEEN DATE_ADD('2011-09-14 00:00:00'INTERVAL 5 HOUR)AND DATE_ADD('2011-09-14 23:59:59'INTERVAL 5 HOUR)」 –
是的。 。當你建議在between子句中添加5小時以獲得類似於GMT-5的結果時,你是否知道一個方便的函數來爲日期時間添加5個小時,以便我可以使用date_add重構所有查詢。 –