度量快速开发平台-专业、快速的软件定制快开平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1379|回复: 3
打印 上一主题 下一主题

[分享] 小发现:count(1)、count(*)、count(column)、order by 1, 2, 3, 4

[复制链接]

348

主题

3572

帖子

9333

积分

论坛元老

Rank: 8Rank: 8

积分
9333
跳转到指定楼层
楼主
发表于 2020-4-20 23:08:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

今天在看SQL的时候看到order by 1, 2, 3这样的语法,顿时眼睛一亮,因为我从来就没有这样用过,一般我都是order by column1, column2, column3,然后我就上网查了一下,有如下的发现:

count(1) = count(2) = count(3) = count(*),这四者是相等的,count(*)我们都知道在统计记录的时候是不管null的,有null记录也会被统计进去,所以count(1)、count(2)、count(3)也是一样;相反的,count(column)按照某个列在统计,如果该column是null,那么统计的时候该记录就不会被统计进去。如果column字段是主键,则count(column)的查询效率较count(1)要高;如果column字段不是主键,则count(1)的效率要比count(column)高,这种查询效率的说法是网上的解释,我觉的不一定是主键,如果建立了索引应该查询效率就会有所提高,我没有检测过,我猜测是这样。

至于order by 1, 2, 3, 4的用法,很好理解,就表示按照查找查询结果集中的column1、column2、column3、column4进行排序,并没有什么其他的特殊之处。



图1:排序列2是人为构造的,不报错





图2:排序列1是真实存在的数据库列,报错

需要注意的是,group by1,2,3,4,5这种用法并不总是有效,如果当分组列是真实存在的数据库列,那么就会报错,如果该列是人为的构造出来的,那么就没错,而这样的话也就没啥实际意义了。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
沙发
发表于 2020-4-21 09:48:56 | 只看该作者
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
板凳
发表于 2020-4-21 09:49:26 | 只看该作者
回复 支持 反对

使用道具 举报

235

主题

2547

帖子

5835

积分

论坛元老

Rank: 8Rank: 8

积分
5835
地板
发表于 2020-2-10 14:06:11 | 只看该作者
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-11-27 11:38 , Processed in 0.119459 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表