在MySQL的论坛上看到有人说“ Index slows down SELECT ... GROUP BY query”,追究下来才知道做group by有时不要索引更好。MySQL为此在5.0.40和5.1.17中追加了新的语法。
而使用索引变慢的原因是,做统计的列不在索引中,所以需要通过索引读每一行,这样行数多的时候会产生很多的随机读,其速度还不如按顺序读整表之后再group。
5.0.40 ignore key for join (idxname)如果没有指定for语句,则是所有的情况都忽略索引。
5.1.17 ignore key for join |order by | group by(idxname)
而使用索引变慢的原因是,做统计的列不在索引中,所以需要通过索引读每一行,这样行数多的时候会产生很多的随机读,其速度还不如按顺序读整表之后再group。