必威体育Betway必威体育官网
当前位置:首页 > IT技术

Select Count(*)、Count(1)、Count(0)的区别和执行效率比较(纯总结)

时间:2019-07-20 03:13:18来源:IT技术作者:seo实验室小编阅读:68次「手机版」
 

selectcount

纯总结,观后笔记一样的存在,若理解有误欢迎指正!

这是我围观的文章1

这是我围观的文章2

W3School对sql count()的解释

首先,COUNT() 函数的定义:返回匹配指定条件的行数。

COUNT(*) 函数返回表中的记录数,包括 NULL 值和重复项。不能与 DISTINCT 一起使用。不需要 expression 参数,因为根据定义,该函数不使用有关任何特定列的信息。

也就是说count(*)只是返回表中行数,因此SQL Server在处理count(*)的时候只需要找到属于表的数据块块头,然后计算一下行数就行了,而不用去读取里面数据列的数据。

COUNT(ALL expression) 对组中的每一行都计算 expression 并返回非空值的数量。

expression: 除 text、image 或 ntext 以外任何类型的表达式。不允许使用聚合函数和子查询。

  1. 在没有索引的情况下,count(*) 和count(1)的执行计划(或说执行效率)是一样的。不存在所谓的单列扫描和多列扫描的问题。
  2. count(*)和count(col)使用的目的是不一样的,在必须要使用count(col)的时候还是要用的,只是在统计表全部行数的时候count(*)就是最佳的选择了。

    count(col)就不一样了,为了去除col列中包含的NULL行,SQL Server必须读取该col的每一行的值,然后确认下是否为NULL,然后在进行计数。因此count(*)应该是比count(col)快的。

  3. count(col)能比count(distinct col)快很多。
  4. 如果你的数据表没有主键,那么count(1)比count(*)快 。

    如果有主键的话,那主键(联合主键)作为count的条件也比count(*)要快。

    如果你的表只有一个字段的话那count(*)就是最快的啦。

  5. count(*) count(1) 两者比较。主要还是要count(1)所相对应的数据字段。

    如果count(1)是聚索引,id,那肯定是count(1)快。但是差的很小的。

    因为count(*)自动会优化指定到那一个字段。所以没必要去count(?),用count(*),sql会帮你完成优化的

emmm那总结:

count(0)=count(1)=count(*)

  1. count(指定的有效值)–执行计划都会转化为count(*)
  2. 如果指定的是列名,会判断是否有null,null不计算

相关阅读

SACK消息(Selective ACK)

TCP通信时,如果发送序列中间某个数据包丢失,TCP会通过重传最后确认的包开始的后续包,这样原先已经正确传输的包也可能重复发送,急剧降

select获取下拉框的值 下拉框默认选中

本文主要介绍select下拉框的相关方法。1.通过id获取下拉框的value和文本值例如:  <select class="form-control" id="numbers"> 

基于CountDownLatch讲AQS之共享锁

一、用法 先看CountDownLatch的用处和用法 每个线程如果持有同一个CountDownLatch,当他们都调用countdownLatch的await()方法的时候

Excel统计函数COUNTIF()的常规用法介绍

Excel统计函数COUNTIF()的常规用法介绍COUNTIF函数常规用法一基本简介作用 用来计算区域中满足给定条件的单元格的个数。语法讲

让ListBox的SelectedItems属性支持数据绑定

前天学习了李永伦老师的贴子,关于使用附加属性让ListBox的SeletedItems属性支持数据绑定.今天再把代码复习一下.原文本在点击打开

分享到:

栏目导航

推荐阅读

热门阅读