我正在讓MySQL在正確的字段上放置一個INDEX()有點麻煩。我有一個查詢,看起來,例如,像這樣:MySQL FORCE INDEX在JOINed查詢中的位置
SELECT m.id as mid,p.id as pid,po.* FROM m
LEFT OUTER JOIN p ON p.mid = m.id AND p.uid = 2
LEFT OUTER JOIN po ON po.mid = m.id AND po.uid = 2
ORDER BY m.date,m.time
而且我有以下指標:
- m.date
- m.time
- p.mid
- p.uid
- po.mid
- po.uid
但是,當我運行EXPLAIN
查詢時,沒有鍵被拾取。我試圖把FORCE INDEX
語句,但MySQL不斷拒絕他們(說在查詢中有一個語法錯誤)。有任何想法嗎?
編輯
這裏的EXPLAIN
:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE m ALL NULL NULL NULL NULL 31 Using filesort
1 SIMPLE p ref mid,uid mid 5 db.m.id 1
1 SIMPLE po ref uid,mid uid 5 const 1
注意p和PO正在處理細了,但還在原地不。我剛剛爲m添加了一個INDEX(日期,時間),而且還是一樣。
看起來你只有31行在表中。 MySQL如何執行查詢有什麼問題?無論解釋計劃是什麼,它都應該很快。 –