当前位置: 首页 > 面试题库 >

Count(*)vs Count(1)-SQL Server

江浩慨
2023-03-14
问题内容

只是想知道您是否有人用光Count(1)Count(*),性能是否存在明显差异,或者这仅仅是过去的日子所养成的传统习惯?

具体的数据库是SQL Server 2005


问题答案:

没有区别。

原因:

在线书籍上说“ COUNT ( { [ [ ALL | DISTINCT ] expression ] | * } )

“ 1”是非空表达式:因此与相同COUNT(*)。优化器可以识别它是什么:琐碎的。

EXISTS (SELECT * ...或相同EXISTS (SELECT 1 ...

例子:

SELECT COUNT(1) FROM dbo.tab800krows
SELECT COUNT(1),FKID FROM dbo.tab800krows GROUP BY FKID

SELECT COUNT(*) FROM dbo.tab800krows
SELECT COUNT(*),FKID FROM dbo.tab800krows GROUP BY FKID

相同的IO,相同的计划,作品

编辑,2011年8月

关于DBA.SE的类似问题。

编辑,2011年12月

COUNT(*)在ANSI-92中专门提到(请查找“ Scalar expressions 125”)

案子:

a)如果指定了COUNT(*),则结果为T的基数。

就是说,ANSI标准将其识别为明显的含义。 由于 这种迷信COUNT(1),RDBMS供应商对其进行了优化。否则将按照ANSI进行评估 __

b)否则,将TX设为单列表,这是对<T的每一行应用 并消除空值的结果。如果消除了一个或多个空值,则会引发完成条件:warning-



 类似资料:
  • 问题内容: 我有一个这样的表: 我现在想获取所有具有多个值的条目。预期结果将是: 我试图做到这一点是这样的: 但是甲骨文不喜欢它。 所以我尝试了这个 …没有成功。 有任何想法吗? 问题答案: 使用该子句比较聚合。 另外,您需要根据要汇总的内容进行分组,以使查询正常运行。以下是一个开始,但是由于您缺少group by子句,因此仍然无法正常工作。您到底想算什么?

  • 本文向大家介绍count(*),count(1)和count(列名)的区别?相关面试题,主要包含被问及count(*),count(1)和count(列名)的区别?时的应答技巧和注意事项,需要的朋友参考一下 count(*),count(1)在统计的时候不会忽略Null,count(列名)在统计的时候会忽略Null。若列名为主键,count(列名)会比count(1),count(*)快,反之则c

  • Question lintcode: (365) Count 1 in Binary Count how many 1 in binary representation of a 32-bit integer. Example Given 32, return 1 Given 5, return 2 Given 1023, return 9 Challenge If the integer

  • 问题内容: 我想知道,我会遇到任何并发问题吗? 这不在交易中。这段代码适用于,但我计划将其与MySql或MS中的SQL一起使用 问题答案: 不,这不应该是一个问题。默认情况下,锁定机制应处理单个语句中的任何并发问题。

  • 本文向大家介绍Select count(*)、Count(1)和Count(列)的区别及执行方式,包括了Select count(*)、Count(1)和Count(列)的区别及执行方式的使用技巧和注意事项,需要的朋友参考一下     在SQL Server中Count(*)或者Count(1)或者Count([列])或许是最常用的聚合函数。很多人其实对这三者之间是区分不清的。本文会阐述这三者的作

  • 问题内容: 我试图计算表中的行数,并认为这是执行此操作的正确方法: 但是计数总是返回。如果我在phpMyAdmin中使用相同的查询,则会得到正确的结果。它位于表格中,因此我也尝试进行测试,但是返回了。 什么是正确的方法? 问题答案: 您必须获取一条记录,它将包含Count()的结果