MySQLにINDEX()を適切なフィールドに追加するのに少し問題があります。私は、このような何か例えば、なりクエリを持っています。JOINedクエリのMySQL FORCE INDEX位置
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はそれらを拒否し続けます(クエリに構文エラーがあると言っています)。何か案は?
EDIT
はここ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がまだないことを。私はmのINDEX(日付、時刻)を追加しただけで、同じことができました。
テーブルに31行しかないようです。 MySQLがどのようにクエリを実行しているかの問題は何ですか? EXPLAIN計画が何であれ、それは速くなければなりません。 –