zoukankan      html  css  js  c++  java
  • MySQL优化之COUNT()效率

    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的纪录数。还有有区别的。


    如果表没有主键,那么count(1)比count(*)快。
    如果有主键,那么count(主键,联合主键)比count(*)快。
    如果表只有一个字段,count(*)最快。

  • 相关阅读:
    ESXi创建磁盘命令
    TNS-12518,TNS-12536,TNS-00506,Linux Error: 11: Resource temporarily unavailable
    监听的instance status blocked分析
    Oracle 用户、对象权限、系统权限
    MIME详解
    11g等待事件之library cache: mutex X
    Latch Free
    PowerDesigner小技巧
    yum本地源配置
    内核参数SEMMSL SEMMNS SEMOPM SEMMNI参数的设置
  • 原文地址:https://www.cnblogs.com/zox2011/p/2681634.html
Copyright © 2011-2022 走看看