Oracle 中count(1) 、count(*) 和count(列名) 函数的区别
2017-11-22 11:20
357 查看
1)count(1)与count(*)比较:
1、如果你的数据表没有主键,那么count(1)比count(*)快
2、如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
3、如果你的表只有一个字段的话那count(*)就是最快的啦
4、count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。
5、如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。 因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的
2)count详解:
1、count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).
2、distinct 列名,得到的结果将是除去值为null和重复数据后的结果
3)举例演示如下:
1 SQL> create table test 2 ( 3 ename varchar2(10), 4 sal number(4) 5 ); 6 7 表已创建。 8 9 10 SQL> insert into test values('fxe1',90); 11 已创建 1 行。 12 13 SQL> insert into test(ename) values('fxe2'); 14 已创建 1 行。 15 16 SQL> insert into test(ename) values('fxe3'); 17 已创建 1 行。 18 19 SQL> insert into test(ename) values('fxe4'); 20 已创建 1 行。 21 22 SQL> insert into test values('fxe5',80); 23 已创建 1 行。 24 25 SQL> insert into test values('fxe6',80); 26 已创建 1 行。 27 28 29 SQL> select * from test; 30 ENAME SAL 31 ---------- ---------- 32 fxe1 90 33 fxe2 34 fxe3 35 fxe4 36 fxe5 80 37 fxe6 80 38 39 40 SQL> select count(*) from test; -- count(*):包含NULL,一共6条记录 41 COUNT(*) 42 ---------- 43 6 44 45 SQL> select count(1) from test; -- count(1):包含NULL,一共6条记录,和count(*)的结果一样 46 COUNT(1) 47 ---------- 48 6 49 50 SQL> select count(sal) from test; -- count(列名):不包含NULL,但包含重复值项,一共3条记录 51 COUNT(SAL) 52 ---------- 53 3 54 55 SQL> select count(distinct sal) from test; -- count(列名):不包含NULL,去重“count(distinct sal)”,一共2条记录 56 COUNT(DISTINCTSAL) 57 ------------------ 58 2 59 60 SQL> select distinct sal from test; 61 SAL 62 ---------- 63 80 64 90
本文转至:https://www.geek-share.com/detail/2567662761.html
作者:DSHORE 出处:http://www.cnblogs.com/dshore123/ 欢迎转载,转载务必说明出处。(如果本文对你有用,可以点击一下右下角的 推荐,谢谢!) |
G M T
检测语言 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 | 世界语 中文简体 中文繁体 丹麦语 乌克兰语 乌兹别克语 乌尔都语 亚美尼亚语 伊博语 俄语 保加利亚语 僧伽罗语 克罗地亚语 冰岛语 加利西亚语 加泰罗尼亚语 匈牙利语 南非祖鲁语 卡纳达语 印地语 印尼巽他语 印尼爪哇语 印尼语 古吉拉特语 哈萨克语 土耳其语 塔吉克语 塞尔维亚语 塞索托语 威尔士语 孟加拉语 宿务语 尼泊尔语 巴斯克语 布尔语(南非荷兰语) 希伯来语 希腊语 德语 意大利语 意第绪语 拉丁语 拉脱维亚语 挪威语 捷克语 斯洛伐克语 斯洛文尼亚语 斯瓦希里语 旁遮普语 日语 格鲁吉亚语 毛利语 法语 波兰语 波斯尼亚语 波斯语 泰卢固语 泰米尔语 泰语 海地克里奥尔语 爱尔兰语 爱沙尼亚语 瑞典语 白俄罗斯语 立陶宛语 索马里语 约鲁巴语 缅甸语 罗马尼亚语 老挝语 芬兰语 苗语 英语 荷兰语 菲律宾语 葡萄牙语 蒙古语 西班牙语 豪萨语 越南语 阿塞拜疆语 阿尔巴尼亚语 阿拉伯语 韩语 马其顿语 马尔加什语 马拉地语 马拉雅拉姆语 马来语 马耳他语 高棉语 齐切瓦语 |
选项 : 历史 : 反馈 : Donate | 关闭 |
相关文章推荐
- 数据库(oracle、mysql)中的count(*)和count(列名)的区别
- Oracle和SQL Server的一些区别(函数和存储过程)
- oracle中函数和存储过程的区别和联系
- Oracle过程和函数的区别
- COUNT(*)与COUNT(列名)的区别
- Oracle 存储过程 定义 和 优点 与 函数 区别
- oracle sum count 的区别
- oracle中函数和存储过程的区别和联系
- oracle中 procedure(存储过程)和function(函数)本质区别
- ORACLE 函数sys_guid()与sequence区别
- (转)ORACLE/SQL SERVER中函数和存储过程的区别
- Oracle translate 函数的用法, 以及和replace的区别
- oracle与sql的区别(常用函数)
- Oracle和SQL Server的一些区别(函数和存储过程)
- Oracle 中count(1) 和count(*) 的区别
- Oracle 存储过程 定义 和 优点 与 函数 区别
- oracle中函数和存储过程的区别和联系
- java07_几张图了解count(*)与count(列名)的区别
- Oracle round()函数与trunc()函数区别介绍
- Oracle translate 函数的用法, 以及和replace的区别