Oracle 中count(1) 和count(*) 的区别
count()与count(*)比较:
如果你的数据表没有主键,那么count()比count(*)快
如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
如果你的表只有一个字段的话那count(*)就是最快的啦
count(*) count() 两者比较。主要还是要count()所相对应的数据字段。
如果count()是聚索引,id,那肯定是count()快。但是差的很小的。
因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的
count详解:
count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).
distinct 列名,得到的结果将是除去值为null和重复数据后的结果
----------------------------------------------------------------------------------------------------------------
举例演示如下:
SQL> create table test
(
ename varchar2(),
sal number()
);
表已创建。
SQL> insert into test values('fxe1',);
已创建 行。
SQL> insert into test(ename) values('fxe2');
已创建 行。
SQL> insert into test(ename) values('fxe3');
已创建 行。
SQL> insert into test(ename) values('fxe4');
已创建 行。
SQL> insert into test values('fxe5',);
已创建 行。
SQL> insert into test values('fxe6',);
已创建 行。
SQL> select * from test;
ENAME SAL
---------- ----------
fxe1
fxe2
fxe3
fxe4
fxe5
fxe6
SQL> select count(*) from test;
COUNT(*)
----------
SQL> select count(sal) from test;
COUNT(SAL)
----------
SQL> select count(distinct sal) from test;
COUNT(DISTINCTSAL)
------------------
SQL> select distinct sal from test;
SAL
----------
- count(1)与count(*)比较:
- 如果你的数据表没有主键,那么count(1)比count(*)快
- 如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
- 如果你的表只有一个字段的话那count(*)就是最快的啦
- count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。
- 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。
- 因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的
- count详解:
- count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).
- distinct 列名,得到的结果将是除去值为null和重复数据后的结果
- ----------------------------------------------------------------------------------------------------------------
- 举例演示如下:
- SQL> create table test
- 2 (
- 3 ename varchar2(10),
- 4 sal number(4)
- 5 );
- 表已创建。
- SQL> insert into test values('fxe1',90);
- 已创建 1 行。
- SQL> insert into test(ename) values('fxe2');
- 已创建 1 行。
- SQL> insert into test(ename) values('fxe3');
- 已创建 1 行。
- SQL> insert into test(ename) values('fxe4');
- 已创建 1 行。
- SQL> insert into test values('fxe5',80);
- 已创建 1 行。
- SQL> insert into test values('fxe6',80);
- 已创建 1 行。
- SQL> select * from test;
- ENAME SAL
- ---------- ----------
- fxe1 90
- fxe2
- fxe3
- fxe4
- fxe5 80
- fxe6 80
- SQL> select count(*) from test;
- COUNT(*)
- ----------
- 6
- SQL> select count(sal) from test;
- COUNT(SAL)
- ----------
- 3
- SQL> select count(distinct sal) from test;
- COUNT(DISTINCTSAL)
- ------------------
- 2
- SQL> select distinct sal from test;
- SAL
- ----------
- 80
- 90
Oracle 中count(1) 和count(*) 的区别的更多相关文章
- Oracle中执行存储过程call和exec区别
Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...
- Oracle中Blob和Clob类型的区别与操作
Oracle中Blob和Clob类型 1.Oracle中Blob和Clob类型的区别 BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的 ...
- Oracle中Union与Union All的区别(适用多个数据库)
Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或 ...
- Oracle中 (+)与left join 的用法区别
Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...
- Oracle中rank() over, dense_rank(), row_number() 的区别
摘自:http://www.linuxidc.com/Linux/2015-04/116349.htm Oracle 中 rank() over, dense_rank(), row_number() ...
- Oracle中Null与空字符串' '的区别
含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...
- Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述
--varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个 ...
- oracle中int类型和number类型区别
INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为 ...
- ORACLE 中rownum和row_number()的使用区别(可指定取sql结果集的第几个数据)
这篇文章主要介绍了oracle中rownum和row_number()的使用方法以及区别和联系,十分的详细,有需要的小伙伴可以参考下. row_number()over(partition by ...
- (转)在oracle中varchar和varchar2有什么区别?
1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2把空串等同于null处理,而varchar仍 ...
随机推荐
- 【转】解决eclipse无法设置NDK问题
参考:http://jingyan.baidu.com/album/4d58d5413000a09dd4e9c0fe.html?picindex=1 到android sdk官网下载r23版本的ad ...
- ajax请求web服务返回json格式
由于.net frameword3.5以上添加了对contenttype的检查,当ajax发送请求时,如果设置了contenttype为json,那么请求webservice时,会自动将返回的内容转为 ...
- 【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)
2007: [Noi2010]海拔 Time Limit: 20 Sec Memory Limit: 552 MBSubmit: 2095 Solved: 1002[Submit][Status] ...
- JSP隐含变量和Spring中Model在EL表达式中的读取顺序
偶然中存在着必然,必然中存在着偶然 偶然出现的bug,必然存是由代码的不合理甚至错误的 代码逻辑越长,越复杂,就越容易出现bug 之前项目里几次偶然出现了一个bug,简单的描述就是第一次新增了之后进行 ...
- bc#27做题笔记
rating掉的哗哗的T^T 1001:水题 1002:水题,但是题目看错了+手速太捉急 看一下样例解释就会知道,实际上第i个人只能坐第i辆公交车.= =好反人类 这样的话题目就简单了许多..... ...
- [MacOS NSAlert的使用]
源:http://helloitworks.com/863.html NSAlert用于弹出一个确认对话框,在程序中被广泛地使用.常见的场景是用户删除数据,会弹出对话框给用户确认,免得用户不小心导致了 ...
- AngularJs $interpolate 和 $parse
$interpolate 将一个字符串编译成一个插值函数.HTML编译服务使用这个服务完成数据绑定. 使用:$interpolate(text,[mustHaveExpression],[truste ...
- HDU 1548 A strange lift (最短路/Dijkstra)
题目链接: 传送门 A strange lift Time Limit: 1000MS Memory Limit: 32768 K Description There is a strange ...
- [Android]Volley源码分析(二)
上一篇介绍了Volley的使用,主要接触了Request与RequestQueue这两个类,这篇就来了解一下这两个类的具体实现. Request类图:
- JSP重定向小例子(不讲原理)
编写一个JSP页面lucknum.jsp,产生0-9之间的随机数作为用户幸运数字,将其保存到会话中,并重定向到另一个页面showLuckNum.jsp中,在该页面中将用户的幸运数字显示出来 luckn ...