私は次のクエリを持っています:
SELECT COUNT( * )
FROM Table1 AS T1
LEFT JOIN Table2 AS T2
USING ( col1 )
WHERE T1.col1 != '1'
AND T1.col2
IN (
'A', 'A-B'
)
AND T1.col3 = 'X'
AND T2.col11= '1'
AND T1.col4 = 'YZ'
このクエリの実行には1秒以上かかります。に置き換えるCOUNT(*)
と、 1秒SELECT(*)
以上かかります。ただし、最後に追加すると、わずか0.02秒で実行されます。LIMIT 0,30
WHERE
句のすべての列にインデックスがあります。に複合インデックスもありTable1
ます。
以下は、EXPLAIN EXTENDED
このクエリのです。
id select_type table type possible_keys key key_len ref rows filtered Extra
1 SIMPLE T1 ref PRIMARY,col4,col3,col2,col1,CompositeIndex... CompositeIndex1 2 const 2010 100 Using where
1 SIMPLE T2 eq_ref PRIMARY,CompositeIndex1,incomeLevel PRIMARY 4 T1.col1 1 100 Using where
このクエリに時間がかかるのはなぜですか。どうすれば高速化できますか?