慢速查询where,group by,order by(using filesort)

时间:2014-02-06 09:12:43

标签: mysql sql group-by sql-order-by query-optimization

您好我在优化查询方面遇到了麻烦。 我已将原始查询(~2秒)缩减为此(0.3秒):

SELECT kunden.id, kunden.Typ, cache.bestellungen_count 
FROM cache
INNER JOIN kunden ON kunden.id=cache.kunde_id
WHERE kunden.kundentyp=1 
GROUP BY kunden.id  
--  ORDER BY kunden.id DESC
ORDER BY cache.bestellungen_gesamtbetrag DESC
LIMIT 0,500

解释说明使用了一个文件排序。

select_type     table   type    possible_keys   key     key_len     ref     rows    Extra   
SIMPLE  kunden  ref     PRIMARY,kundentyp,id_k...   kundentyp   4   const   26235   Using where; Using temporary; Using filesort
SIMPLE  cache   ref     kunde_id,kunde_id_gesamtbetrag  kunde_id    4   partyschnaps.kunden.indexh  1   Using index condition

我猜问题是where,group和order by不能全部使用Index,所以当我按kunden.id命令时,性能提升约30(0.01s),一切都可以通过索引来解决。 / p>

按列排序的缓存表上的索引以及FK kunden_id和order by列的组合索引无效。

0 个答案:

没有答案