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. 【CodeForces 261B】Maxim and Restaurant(DP,期望)

    题目链接 第一种解法是$O(n^3*p)$的:f[i][j][k]表示前i个人进j个人长度为k有几种方案(排列固定为123..n时).$f[i][j][k]=f[i-1][j][k]+f[i-1][j ...

  2. 快速查找无序数组中的第K大数?

    1.题目分析: 查找无序数组中的第K大数,直观感觉便是先排好序再找到下标为K-1的元素,时间复杂度O(NlgN).在此,我们想探索是否存在时间复杂度 < O(NlgN),而且近似等于O(N)的高 ...

  3. IOS实现动画的几种简单方法

    1.使用 NSTimer 来实现 [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(setNeed ...

  4. Leetcode 134 Gas Station

    There are N gas stations along a circular route, where the amount of gas at station i is gas[i]. You ...

  5. PHOG特征

    PHOG特征 2016年7月13日 21:07:57 什么是PHOG PHOG是Pyramid HOG(pyramid histogram of oriented gradient)的简称,是在图像尺 ...

  6. my97日期控件

    http://www.seabroad.cn/cq/datepick/demo.htm 但是由于某些原因,担心这个网站不稳定,所以复制一下 一. 简介 1. 简介 目前的版本是:4.0 Prerele ...

  7. Android成长日记-Fragment的生命周期与Activity通信

    1. public void onAttach(Activity activity) 当Fragment被添加到Activity时候会回调这个方法,并且这个方法只会被回调一次 2. public vo ...

  8. 洛谷P1410 子序列

    题目描述 给定一个长度为N(N为偶数)的序列,问能否将其划分为两个长度为N/2的严格递增子序列, 输入输出格式 输入格式: 若干行,每行表示一组数据.对于每组数据,首先输入一个整数N,表示序列的长度. ...

  9. SELINUX、Security Access Control Strategy && Method And Technology Research - 安全访问控制策略及其方法技术研究

    catalog . 引言 . 访问控制策略 . 访问控制方法.实现技术 . SELINUX 0. 引言 访问控制是网络安全防范和客户端安全防御的主要策略,它的主要任务是保证资源不被非法使用.保证网络/ ...

  10. PHP守护进程

    php也是可以直接进行守护进程的启动与终止的,相对于shell来说会简单很多,理解更方便,当然了php的守护进程要实现自动重启还是要依赖于shell的crontab日程表,每隔一段时间去执行一次脚本看 ...