2011-01-06 27 views
0

私は2つのテーブルを持っています:table1は4lacs(400,000)のレコードを持ち、他は100レコードです。mysqlクエリの最適化

私は、次のクエリをしようとしています:

SELECT DISTINCT t1.id as id 
FROM table1 t1 
JOIN table2 t2 ON t2.f_id = t1.id 
       AND t1.action = 0; 

私はMYISAMエンジンを使用しています。 t1.idとt2.f_idは同じでインデックスが付けられています。

このクエリには30秒かかります。それを速くする方法はありますか?

答えて

0

t1.action,t1.idに1つのインデックスを設定し、t2.f_idに1つのインデックスを設定します。

4

table1.idtable1.actiontable2.f_idにインデックスを持つようにしてください、と他のインデックスがパフォーマンスの問題を引き起こしているいずれかのテーブルの上に住んでいないと仮定すると、これが最適に近いようになります。

SELECT 
    DISTINCT t1.id AS id 
FROM 
    table1 AS t1 
    JOIN table2 AS t2 ON t2.f_id = t1.id 
WHERE 
    t1.action = 0 
0

第一歩だろうtable1にインデックスを追加して、idとを合わせてください。

distinctをクエリに導入することで、それも減速します。