我有以下查询:
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(*)
,SELECT(*)
它也需要1 秒以上。但是,如果我LIMIT 0,30
在最后添加,它会在0.02 seconds 内执行。
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
为什么这个查询需要这么长时间,我怎样才能让它更快?