• 【转载】Oracle 中count(1) 、count(*) 和count(列名) 函数的区别


    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
    复制代码

    本文转至:http://blog.csdn.net/szstephenzhou/article/details/8446481

    by -- 阿圆这个程序媛
  • 相关阅读:
    区块链100篇之第四篇--矿工及挖矿
    区块链100篇之第三篇--数字签名
    区块链100篇之第二篇--P2P与比特币的支付与交易
    区块链100篇之第一篇--序(比特币)
    Bootstrap
    网页布局笔记
    element-ui中用el-dialog+el-table+el-pagination实现文件默认选中且在分页的条件下有记忆功能
    css中border画三角形
    border画梯形
    this作用范围
  • 原文地址:https://www.cnblogs.com/chaos-li/p/10149180.html
Copyright © 2020-2023  润新知