问一个关于group by 的问题
有字段 A B
select a,b from 表 group by a
这时候b的值如何确定的?
还有 select a from 表 group by a;
和 select distinct(a) from 表;
哪个效率高?
------解决方案--------------------
------解决方案--------------------select a,b from 表 group by a
这时候b的值如何确定的?
1、不是标准r的SQL语句;
2、随机选择B
还有 select a from 表 group by a;
和 select distinct(a) from 表;
哪个效率高?
如果数据量比较大,建议用distinct,速度快一些
------解决方案--------------------
------解决方案--------------------
与索引有关,在GROUP BY的字段上建立索引,GROUP BY速度快一些,反之,distinct快一些
------解决方案--------------------
mysql在优化group by 和 distinct时,用的是同样的方法:临时表法和文件排序分组法。
优化的办法都是在目标列上加索引。
在select * from a where id not in(select distinct(id) from b);这样的查询中,distinct会使用“早期终结”优化,只要发现一个符合要求的值后,立刻返回,查询下一个值。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------有字段 A B
select a,b from 表 group by a
这时候b的值如何确定的?
随便一个
还有 select a from 表 group by a;
和 select distinct(a) from 表;
哪个效率高?
一样低