当前位置:首页 > 开发 > 数据库 > 正文

MySQL优化之COUNT()效率

发表于: 2013-08-28   作者:BigBird2012   来源:转载   浏览次数:
摘要: COUNT(*)与COUNT(COL) 网上搜索了下,发现各种说法都有:比如认为COUNT(COL)比COUNT(*)快的;认为COUNT(*)比COUNT(COL)快的;还有朋友很搞笑的说到这个其实是看人品的。 在不加WHERE限制条件的情况下,COUNT(*)与COUNT(COL)基本可以认为是等价的;但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;(

COUNT(*)COUNT(COL)

网上搜索了下,发现各种说法都有:比如认为COUNT(COL)COUNT(*)快的;认为COUNT(*)COUNT(COL)快的;还有朋友很搞笑的说到这个其实是看人品的。

在不加WHERE限制条件的情况下,COUNT(*)COUNT(COL)基本可以认为是等价的;
但是在有WHERE限制条件的情况下,COUNT(*)会比COUNT(COL)快非常多;(待测)

 

具体的数据参考如下:

 

[SQL] select count(*) from campaign_content_report   (存在主键)

       10次测试

 

最快时间: 0.011ms
最慢时间: 0.908ms   (应该很服务器响应时间有关)

 

命中最多的范围:0.011ms~0.014ms

 

[SQL] select count(*) from campaign_content_report where campaign_id = '11081911350290' (存在主键)

 

受影响的行: 0
最快时间: 0.014ms
最慢时间: 0.024ms

 

 [SQL] select count(campaign_id) from campaign_content_report where campaign_id = '11081911350290'

    受影响的行: 0

最快时间: 0.014ms

最慢时间: 0.019ms

COUNT(*)通常是对主键进行索引扫描,而COUNT(COL)就不一定了,另外前者是统计表中的所有符合的纪录总数,而后者是计算表中所有符合的COL的纪录数。还有有区别的。

如果表没有主键,那么count1)比count*)快。

如果有主键,那么count(主键,联合主键)比count*)快。

如果表只有一个字段,count*)最快。

 

MySQL优化之COUNT()效率

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
select count(*),count(id) from tables count(*) 会查询空行,count(id) 不会查询空行 如果payment
select * from bl_keylist where Title like '%bags%' or Title like '%handbags%' order by rand()
在工作过程中,时不时会有开发咨询几种select count()的区别,我总会告诉他们使用select count(*)
breeze_day 浅谈count(1),count(*)和count(column_name)    最近看到群里有位仁兄,问到关于co
  数据库管理系统实现了理论上的概念,但是这种在实际硬件设备上的实现受到了实际物理条件的约束
  数据库管理系统实现了理论上的概念,但是这种在实际硬件设备上的实现受到了实际物理条件的约束
  数据库管理系统实现了理论上的概念,但是这种在实际硬件设备上的实现受到了实际物理条件的约束
写在前面 昨天去青龙峡玩了一天,累的跟狗似的。不过还好,最终也算登到山顶了,也算来北京后征服的
原文: Advice on using COUNT( ) In the SQL Server community, one thing that I sometimes encou
今天在群里面遇到一个人问的问题 他只问了一个问题:为何查询了主键,却没有使用主键索引,因为我对
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号