互联网服务Db2

有个topic想让大家讨论一下,关于SQL的count(*), count(1), count(pk)有什么不同!

抛砖引玉一下刚刚研究了一下,count(*)可以使用fast path,但是count(1)不行,但功能上应该是相同的,不过count(pk)不包括null或者duplicated row,因此与前两个不同。据说mysql都是相同的,是因为mysql的table都有default的pk。*待会有空我会做几个sample看看...显示全部

抛砖引玉一下
刚刚研究了一下,count(*)可以使用fast path,但是count(1)不行,但功能上应该是相同的,不过count(pk)不包括null或者duplicated row,因此与前两个不同。据说mysql都是相同的,是因为mysql的table都有default的pk。
*待会有空我会做几个sample看看

收起
参与7

查看其它 2 个回答steve25的回答

steve25steve25数据库管理员IBM

我刚刚测了一下count(),count(pk),access plan都走的是index,没有任何不同,很奇怪,而且index都不是pirmary key的index。

表一共有22893145条记录。

互联网服务 · 2017-07-05
浏览1932

回答者

steve25
数据库管理员IBM

steve25 最近回答过的问题

回答状态

  • 发布时间:2017-07-05
  • 关注会员:3 人
  • 回答浏览:1932
  • X社区推广