zoukankan      html  css  js  c++  java
  • sql中count(1)、count(*)和count(字段名)的区别sql中count(1)、count(*)和count(字段名)的区别

    测试实例


    count(1)测试,sql语句如下:

    select count(1) from ums_member;
     
    结果如下:


    count(*)测试,sql语句如下:

    select count(*) from ums_member;
    结果如下:

     

    count(主键)测试,sql语句如下:

    select count(id) from ums_member; --id为主键字段
    结果如下:


    count(普通列)测试,sql语句如下:

    select count(phone) from ums_member;
    结果如下:


    count(1)、count(*)和count(字段名)执行效果上的区别
    count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL
    count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL
    count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数,即某个字段值为NULL时,不统计。
    count(1)、count(*)和count(字段名)执行效率上的区别
    如上可以看出其实四种方式的效率是一样的,但是网上有如下说法:

    列名为主键,count(列名)会比count(1)快
    列名不为主键,count(1)会比count(列名)快
    如果表多个列并且没有主键,则 count(1) 的执行效率优于 count(*)
    如果有主键,则 select count(主键)的执行效率是最优的
    如果表只有一个字段,则 select count(*)最优。
    具体的情况还是得看业务场景中使用时的效果,在业务场景中可以多试试。


    ————————————————
    版权声明:本文为CSDN博主「走不动的木木」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Jame_s/article/details/102926383

  • 相关阅读:
    Leetcode 349. Intersection of Two Arrays
    hdu 1016 Prime Ring Problem
    map 树木品种
    油田合并
    函数学习
    Leetcode 103. Binary Tree Zigzag Level Order Traversal
    Leetcode 102. Binary Tree Level Order Traversal
    Leetcode 101. Symmetric Tree
    poj 2524 Ubiquitous Religions(宗教信仰)
    pat 1009. 说反话 (20)
  • 原文地址:https://www.cnblogs.com/javalinux/p/15675701.html
Copyright © 2011-2022 走看看