这两者本质上应该没有可比性,distinct 取出唯一列,group by 是分组,但有时候在优化的时候,在没有聚合函数的时候,他们查出来的结果也一样。
一、group by英 [ɡru:p bai] 美 [ɡrup baɪ]
[计][WIN]分组依据
拓展资料1、This operator also serves as input to the Group By operator.
该 *** 作符还充当Group By *** 作符的输入。
2、Complete the following steps to create and program the Group By operator.
完成以下步骤,创建Group By *** 作符并对它进行配置。
3、With the appropriate access path, the ORDER BY or GROUP BY requirement can be met without sorting.
使用恰当的访问路径,无需排序即可满足ORDER BY或GROUP BY需求。
4、Drag it to the right of the Group By operator.
将它拖放到Group By *** 作符的右边。
二、distinct英 [dɪˈstɪŋkt] 美 [dɪˈstɪŋkt]
adj.明显的,清楚的卓越的,不寻常的有区别的确切的
拓展资料1、I have distinct memories of him in his last years.
我清楚地记得他最后几年的情况。
2、Another Cup marathon between the two sides is now a distinct possibility.
双方很可能再进行一场马拉松式的优胜杯比赛。
3、The photograph showed a distinct image.
照片显出了明晰的影像。
4、I want a distinct answer to my question.
我要求对我的问题作出明确的答复。
首先对于MySQL的DISTINCT的关键字的一些用法:1.在count不重复的记录的时候能用到,比如SELECTCOUNT(DISTINCTid)FROMtablename;就是计算talbebname表中id不同的记录有多少条。2,在需要返回记录不同的id的具体值的时候可以用,比如SELECTDISTINCTidFROMtablename;返回talbebname表中不同的id的具体的值。3.上面的情况2对于需要返回mysql表中2列以上的结果时会有歧义,比如SELECTDISTINCTid,typeFROMtablename;实际上返回的是id与type同时不相同的结果,也就是DISTINCT同时作用了两个字段,必须得id与tyoe都相同的才被排除了,与我们期望的结果不一样。4.这时候可以考虑使用group_concat函数来进行排除,不过这个mysql函数是在mysql4.1以上才支持的。5.其实还有另外一种解决方式,就是使用,SELECTid,type,count(DISTINCTid)FROMtablename,虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),返回的结果是只有id不同的所有结果和上面的4类型可以互补使用,就是看你需要什么样的数据了。DISTINCT的效率:SELECTid,type,count(DISTINCTid)FROM tablename虽然这样的返回结果多了一列无用的count数据(或许你就需要这个我说的无用数据),SELECTid,typefromtablenamegroupbyid这样貌似也可以,用distinct的时候,如果它有索引,mysql会把它转成groupby的方式执行。 MySQL数据库对于COUNT(*)的不同处理会造成不同的结果,比如,执行:SELECTCOUNT(*)FROMtablename即使对于千万级别的数据mysql也能非常迅速的返回结果。 执行:SELECTCOUNT(*)FROMtablenameWHERE…..mysql的查询时间开始攀升。 网上查资料得知:当没有WHERE语句对于整个mysql的表进行count运算的时候,MyISAM类型的表中保存有总的行数,而当添加有WHERE限定语句的时候Mysql需要对整个表进行检索,从而得出count的数值,因此加上where条件的查询速度就会很慢了。以上关于MySQL数据库的distinct以及count(*)的使用就介绍到这里了,希望本次的介绍能够带给您一些收获。MysQL中的两个谓词distinct和limit,它们的作用是LIMIT是MySQL内置函数,其作用是用于限制查询结果的条数。
LIMIT子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须。
是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回。
记录行的最大数目。初始记录行的偏移量是 0(而不是 1): 为了与 PostgreSQL 兼容,MySQL 也支持句。
使用说明:
1、如果是用 MySQL + Apache,使用的又是 FreeBSD 网络 *** 作系统的话,安装时候你应按注意到FreeBSD的版本问题。
在 FreeBSD 的 3.0 以下版本来说,MySQL Source 内含的 MIT-pthread 运行是正常的,但在这版本以上,你必须使用 native threads,也就是加入一个 with-named-thread-libs=-lc_r 的选项。
2、如果在 COMPILE 过程中出了问题,请先检查你的 gcc版本是否在 2.81 版本以上,gmake 版本是否在3.75以上。
3、如果不是版本的问题,那可能是你的内存不足,请使用 ./configure--with-low-memory 来加入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)