我想優化以下查詢,因爲它需要很長時間才能執行。任何人都可以提供關於如何優化這個建議,並且他們可以推薦任何索引來加速它。作爲說明,edata表包含大約100萬行,ddata表大約有1500萬行。有來自DDATA選擇,如果你運行查詢約5000項如何優化大型表的MySQL查詢
SELECT * FROM ddata WHERE DATE(startDate) = DATE(NOW());
,我試圖優化的查詢是:
SELECT e.ID,e.uID,e.sID
FROM edata e
LEFT JOIN ddata d ON e.sID=d.sID
WHERE DATE(d.startDate)=DATE(NOW());
感謝
索引的基本經驗法則:在比較操作中使用的任何字段都應該有一個索引。那就是你的'where','join',有時'order'子句中使用的任何東西。請注意,如果您在比較中使用該字段的DERIVED值,就像使用DATE()調用一樣,在字段上使用索引是沒有用的。 'startDate'可能被索引,但是'md5(somefield)'會強制執行表掃描。 –
可能作爲旁白,使用NOW()意味着查詢不會進入查詢緩存 - 如果您預先填充了字符串,那麼重複運行會更快。 –
我會運行EXPLAIN語句https://dev.mysql.com/doc/refman/5.0/en/explain.html向您顯示有關查詢的信息。你可以發佈結果,以便我們可以給出相關答案。 – Tommassiov