栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

MySQL-复杂度:从MyTable中选择COUNT(*);

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL-复杂度:从MyTable中选择COUNT(*);

这取决于存储引擎。

  • 对于MyISAM,将为每个表存储总行数,因此将存储
    SELECt COUNT(*) FROM yourtable
    操作O(1)。它只需要读取此值。
  • 对于InnoDB,不存储总行数,因此需要完整扫描。这是O(n)操作。

从手册:

InnoDB
不保留表中行的内部计数。(实际上,由于多版本控制,这会有些复杂。)要处理一条
SELECt COUNT(*) FROMt
语句,
InnoDB
必须扫描表的索引,如果索引不完全在缓冲池中,则要花费一些时间。如果您的表不经常更改,那么使用MySQL查询缓存是一个很好的解决方案。为了快速计数,您必须使用自己创建的计数器表,并让您的应用程序根据插入和删除它来对其进行更新。
SHOWTABLE STATUS
如果近似行数足够,也可以使用。请参见第13.2.13.1节“
InnoDB
性能调优技巧
”。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/421314.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号