原创

MySQL-distinct-group by性能-索引设置

distinct 和 group by ,mysql 8.0之前,group by有隐式排序,理论上性能会慢,但是group by 可以做聚合计算。mysql 8.0之后没有区别。所以如果仅仅要去重数据就使用distinct
如果去重的字段有索引,那么 group by 和 distinct 都可以使用索引,此情况它们的性能是相同的;而当去重的字段没有索引时,distinct 的性能就会高于 group by,因为在 MySQL 8.0 之前,group by 有一个隐藏的功能会进行默认的排序,这样就会触发 filesort 从而导致查询性能降低。
更多解释 https://blog.csdn.net/sufu1065/article/details/125669918

【关键索引】distinct的字段加上索引有助于性能,索引字段: (where 或 on 条件字段)+DISTINCT字段(注意先后顺序)

INNER JOIN edu_online_course c ON c.container_id = i.container_id and c.course_id = s.course_id and c.implement_id = i.id and c.train_level = s.train_level

另外join on的字段最大程度写全
正文到此结束
本文目录