
让groupby使用索引而不创建临时表,使用索引的前提条件是:所有GROUPBY列引用同一索引的属性,并且索引按顺序保存其关键字(B-树索引,不是HASH索引)至于DISTINCT和GROUPBY哪个效率更高?理论上DISTINCT *** 作只需要找出所有不同的值就可以了。而GROUPBY *** 作还要为其他聚集函数进行准备工作。从这一点上将,GROUPBY *** 作做的工作应该比DISTINCT所做的工作要多一些。但是实际上,DISTINCT *** 作,它会读取了所有记录;GROUPBY需要读取的记录数量与分组的组数量一样多,比实际存在的记录数目要少很多。
1.创建测试表,
创建表test_group_cols(idnumber,值varchar2(20),remarkvarchar2(20));
2.插入需要测试的数据,
插入集体集体(1,“15”,“rmk1”);
插入集体集体(2,“15”,“rmk1”);
插入group_colstriues(3,25x,rmk2);
插入group_colstriues(3'333',rmk4);
插入group_colstriues(3,'666','rmk3');
插入集体集体(4'35',rmk1');
插入group_colstriues(4.77,rmk1);
3.查询表的所有字段,选择。*,rowidfromuser_tab_colstwheretable_name=upper('test_group_cols')如下图。
4.写SQL,groupbyid字段,selectid,count(*)fromtest_group_colstgroupbyid,如下图。
以上就是关于mysql中的索引,在什么时候开始起作用.onwheregroup byhaving全部的内容,包括:mysql中的索引,在什么时候开始起作用.onwheregroup byhaving、如何使用group by 分组查询表中所有字段信息、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)