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. SQLite数据库的基本操作

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中.它是D.RichardHipp建立的公有领域项目.它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...

  2. js-一种去掉数组中重复元素的方法

    思路来源于某个同学的博客 function norepeat(arr){ return arr.filter(function(val,index,array) { return array.inde ...

  3. 基于Token的身份验证——JWT

    初次了解JWT,很基础,高手勿喷. 基于Token的身份验证用来替代传统的cookie+session身份验证方法中的session. JWT是啥? JWT就是一个字符串,经过加密处理与校验处理的字符 ...

  4. 研究dotnet动态语言IronPython(对应Java的Groovy)

    Java的标配动态语言Groovy,两者搭配可以说是完美!大规模运用的项目,如:Jenkins,通过动态语言可以弥补先天系统缺陷的bug,再者就是加强自己的业务逻辑等. 那么换过dotnet上,对应的 ...

  5. Ext FileSystem Family、Ext2、Ext3

    catalog . 简介 . Ext2文件系统 . Ext3文件系统 . 小结 1. 简介 VFS虚拟文件系统接口和数据结构构成了一个框架,各个文件系统的实现都必须在框架内运转,但这并不要求每个文件系 ...

  6. C++ 之const Member Functions

    Extraction from C++ primer 5th Edition 7.1.2 The purpose of the const that follows the parameter lis ...

  7. 和redis谈一场恋爱(第二天约会了解彼此)

    最近使用了Memcache,带来的便利已经让我欣喜若狂.开启了另一种又快又好的方式存储和读取数据.中间经过了一番折腾,学习了mysql,终于有学到了redis. Redis的全名是Remote Dic ...

  8. bootstrap学习总结-01 环境准备

    1 下载Bootstrap Bootstrap 是最受欢迎的 HTML.CSS 和 JS 框架,用于开发响应式布局.移动设备优先的 WEB 项目.当前下载的Bootstrap版本为v3.3.7 htt ...

  9. C++ Primer Plus读书笔记

    第五章 循环和关系表达式 1. 2.类别别名: (1)   #define FLOAT_POINTER float * FLOAT_POINTER pa, pb; 预处理器置换将该声明转换成  flo ...

  10. 一键搭建vpn服务器

    今天花了很多时间搭建vpn服务器,后来找到一篇一键搭建服务器的文章,那叫一个爽,附上链接收藏~~~看开以后要写脚本了 http://www.centoscn.com/image-text/instal ...