50pt
b-windさんの回答にある「一つのクエリに付き一つの INDEX しか使用できない制約」は、実機確認した結果、MySQL 5.0では少なくともそういう制約はないようです。
ただし、サブクエリを使った場合、サブクエリ内では確かにインデクスは使われないようですね。
サブクエリをジョインに書き直すと、インデクスを有効利用できるようです。
http://dev.mysql.com/doc/refman/4.1/ja/rewriting-subqueries.html...
書き換え例としては、以下のようになります。
select x.* from category as x inner join category as y on x.id=y.parent_id where y.id='10'
20pt
おそらく無理。
MySQL は一つのクエリに付き一つの INDEX しか使用できない制約がある。
クエリを2つに分散すべきと思う。
MySQL(1) チューニングについての本 (LocalScope::)
MySQLが、クエリ毎、テーブル毎に最大インデックス一つしか使わないとか、もう聞いてびっくりな事とかしっかり説明されているので、良い(ほんとか)。
え~~そうなんですか。
回答ありがとうございます。
回答ありがとうございます。JOINを使ったSQLに書き換えたらインデックスを使う様になり、アプリ全体としては1/10の時間で終ることが出来ます。