我们致力于一个MySQL知识的分享网站

  |   本站Feed      

MySQL DISTINCT 的基本实现原理

2008-12-12 10:26:15  |   才被阅读:816 次  |   要评论?
分类: MySQL基础知识  |   发布: OurMySQL  |   来源:简朝阳
标签: ,

DISTINCT 实际上和 GROUP BY 操作的实现非常相似,只不过是在 GROUP BY 之后的每组中只取出一条记录而已。所以,DISTINCT 的实现和 GROUP BY 的实现也基本差不多,没有太大的区别。同样可以通过松散索引扫描或者是紧凑索引扫描来实现,当然,在无法仅仅使用索引即能完成 DISTINCT 的时候,MySQL 只能通过临时表来完成。但是,和 GROUP BY 有一点差别的是,DISTINCT 并不需要进行排序。也就是说,在仅仅只是 DISTINCT 操作的 Query 如果无法仅仅利用索引完成操作的时候,MySQL 会利用临时表来做一次数据的“缓存”,但是不会对临时表中的数据进行 filesort 操作。当然,如果我们在进行 DISTINCT 的时候还使用了 GROUP BY 并进行了分组,并使用了类似于 MAX 之类的聚合函数操作,就无法避免 filesort 了。

继续阅读全文...

MySQL 中 GROUP BY 基本实现原理

2008-12-10 10:28:27  |   才被阅读:1,066 次  |   要评论?
分类: MySQL基础知识  |   发布: OurMySQL  |   来源:简朝阳
标签:

在 MySQL 中,GROUP BY 的实现同样有多种(三种)方式,其中有两种方式会利用现有的索引信息来完成 GROUP BY,另外一种为完全无法使用索引的场景下使用。下面我们分别针对这三种实现方式做一个分析。

继续阅读全文...