您好我在优化查询方面遇到了麻烦。 我已将原始查询(~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列的组合索引无效。