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
----------
  1. count(1)与count(*)比较:
  2. 如果你的数据表没有主键,那么count(1)比count(*)快
  3. 如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快
  4. 如果你的表只有一个字段的话那count(*)就是最快的啦
  5. count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。
  6. 如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。
  7. 因为count(*),自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的
  8. count详解:
  9. count(*)将返回表格中所有存在的行的总数包括值为null的行,然而count(列名)将返回表格中除去null以外的所有行的总数(有默认值的列也会被计入).
  10. distinct 列名,得到的结果将是除去值为null和重复数据后的结果
  11. ----------------------------------------------------------------------------------------------------------------
  12. 举例演示如下:
  13. SQL> create table test
  14. 2 (
  15. 3 ename varchar2(10),
  16. 4 sal number(4)
  17. 5 );
  18. 表已创建。
  19. SQL> insert into test values('fxe1',90);
  20. 已创建 1 行。
  21. SQL> insert into test(ename) values('fxe2');
  22. 已创建 1 行。
  23. SQL> insert into test(ename) values('fxe3');
  24. 已创建 1 行。
  25. SQL> insert into test(ename) values('fxe4');
  26. 已创建 1 行。
  27. SQL> insert into test values('fxe5',80);
  28. 已创建 1 行。
  29. SQL> insert into test values('fxe6',80);
  30. 已创建 1 行。
  31. SQL> select * from test;
  32. ENAME SAL
  33. ---------- ----------
  34. fxe1 90
  35. fxe2
  36. fxe3
  37. fxe4
  38. fxe5 80
  39. fxe6 80
  40. SQL> select count(*) from test;
  41. COUNT(*)
  42. ----------
  43. 6
  44. SQL> select count(sal) from test;
  45. COUNT(SAL)
  46. ----------
  47. 3
  48. SQL> select count(distinct sal) from test;
  49. COUNT(DISTINCTSAL)
  50. ------------------
  51. 2
  52. SQL> select distinct sal from test;
  53. SAL
  54. ----------
  55. 80
  56. 90

Oracle 中count(1) 和count(*) 的区别的更多相关文章

  1. Oracle中执行存储过程call和exec区别

    Oracle中执行存储过程call和exec区别 在sqlplus中这两种方法都可以使用: exec pro_name(参数1..); call pro_name(参数1..); 区别: 1. 但是e ...

  2. Oracle中Blob和Clob类型的区别与操作

    Oracle中Blob和Clob类型 1.Oracle中Blob和Clob类型的区别 BLOB和CLOB都是大字段类型,BLOB是按二进制来存储的,而CLOB是可以直接存储文字的.其实两个是可以互换的 ...

  3. Oracle中Union与Union All的区别(适用多个数据库)

    Oracle中Union与Union All的区别(适用多个数据库) 如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字.union(或 ...

  4. Oracle中 (+)与left join 的用法区别

    Oracle中 (+)与left join 的用法区别 原创 2017年01月11日 13:33:42 6648 select * from a,b where a.id=b.id(+); (+)写在 ...

  5. Oracle中rank() over, dense_rank(), row_number() 的区别

    摘自:http://www.linuxidc.com/Linux/2015-04/116349.htm Oracle 中 rank() over, dense_rank(), row_number() ...

  6. Oracle中Null与空字符串' '的区别

    含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...

  7. Oracle中varchar,varchar2,nvarchar,nvarchar2的区别及其它数据类型描述

    --varchar,varchar2 联系: 1.varchar/varchar2用于存储可变长度的字符串 比如varchar(20),存入字符串'abc',则数据库中该字段只占3个字节,而不是20个 ...

  8. oracle中int类型和number类型区别

    INT类型是NUMBER类型的子类型.下面简要说明:(1)NUMBER(P,S)该数据类型用于定义数字类型的数据,其中P表示数字的总位数(最大字节个数),而S则表示小数点后面的位数.假设定义SAL列为 ...

  9. ORACLE 中rownum和row_number()的使用区别(可指定取sql结果集的第几个数据)

    这篇文章主要介绍了oracle中rownum和row_number()的使用方法以及区别和联系,十分的详细,有需要的小伙伴可以参考下.   row_number()over(partition by ...

  10. (转)在oracle中varchar和varchar2有什么区别?

    1.varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节: 2.VARCHAR2把空串等同于null处理,而varchar仍 ...

随机推荐

  1. 【转】解决eclipse无法设置NDK问题

    参考:http://jingyan.baidu.com/album/4d58d5413000a09dd4e9c0fe.html?picindex=1  到android sdk官网下载r23版本的ad ...

  2. ajax请求web服务返回json格式

    由于.net frameword3.5以上添加了对contenttype的检查,当ajax发送请求时,如果设置了contenttype为json,那么请求webservice时,会自动将返回的内容转为 ...

  3. 【BZOJ-2007】海拔 最小割 (平面图转对偶图 + 最短路)

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2095  Solved: 1002[Submit][Status] ...

  4. JSP隐含变量和Spring中Model在EL表达式中的读取顺序

    偶然中存在着必然,必然中存在着偶然 偶然出现的bug,必然存是由代码的不合理甚至错误的 代码逻辑越长,越复杂,就越容易出现bug 之前项目里几次偶然出现了一个bug,简单的描述就是第一次新增了之后进行 ...

  5. bc#27做题笔记

    rating掉的哗哗的T^T 1001:水题 1002:水题,但是题目看错了+手速太捉急  看一下样例解释就会知道,实际上第i个人只能坐第i辆公交车.= =好反人类 这样的话题目就简单了许多..... ...

  6. [MacOS NSAlert的使用]

    源:http://helloitworks.com/863.html NSAlert用于弹出一个确认对话框,在程序中被广泛地使用.常见的场景是用户删除数据,会弹出对话框给用户确认,免得用户不小心导致了 ...

  7. AngularJs $interpolate 和 $parse

    $interpolate 将一个字符串编译成一个插值函数.HTML编译服务使用这个服务完成数据绑定. 使用:$interpolate(text,[mustHaveExpression],[truste ...

  8. HDU 1548 A strange lift (最短路/Dijkstra)

    题目链接: 传送门 A strange lift Time Limit: 1000MS     Memory Limit: 32768 K Description There is a strange ...

  9. [Android]Volley源码分析(二)

    上一篇介绍了Volley的使用,主要接触了Request与RequestQueue这两个类,这篇就来了解一下这两个类的具体实现. Request类图:

  10. JSP重定向小例子(不讲原理)

    编写一个JSP页面lucknum.jsp,产生0-9之间的随机数作为用户幸运数字,将其保存到会话中,并重定向到另一个页面showLuckNum.jsp中,在该页面中将用户的幸运数字显示出来 luckn ...