V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
okwork
V2EX  ›  问与答

MySQL 统计总数 count 算全表扫描吗?

  •  
  •   okwork · 2019-05-21 23:51:29 +08:00 via Android · 3209 次点击
    这是一个创建于 1773 天前的主题,其中的信息可能已经有所发展或是发生改变。
    每隔一段时间要统计下表中的三个子类的总数目,count 汇总值,算全表扫描吗?
    6 条回复    2019-05-22 14:54:02 +08:00
    WytheHuang
        1
    WytheHuang  
       2019-05-22 00:05:28 +08:00 via Android
    explain
    msg7086
        2
    msg7086  
       2019-05-22 00:09:19 +08:00
    请用等同生产的环境做 Explain。
    不同的版本、不同的变体、不同的引擎,甚至不同的表结构,都会导致优化不同。
    carlclone
        3
    carlclone  
       2019-05-22 06:19:19 +08:00
    计数器递增
    agostop
        4
    agostop  
       2019-05-22 08:28:44 +08:00
    用索引 count
    sdot96
        5
    sdot96  
       2019-05-22 08:50:29 +08:00 via Android
    看引擎
    nekoneko
        6
    nekoneko  
       2019-05-22 14:54:02 +08:00
    InnoDB:count(主键) 全表扫描累加,count(1)全表扫描累加,count(字段)分为字段可为空和字段不可为空,不可为空则读到后累加,可为空则读到后判断不为空累加。count(*) 不取值累加。除了 count(*)外其他都要取值基本上 count(*)是最快的

    MyISAM: 会记录一张表的行数,count 时直接返回行数
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1195 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 18:13 · PVG 02:13 · LAX 11:13 · JFK 14:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.