前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mysql的count统计查询到底要怎么用【mysql】

mysql的count统计查询到底要怎么用【mysql】

作者头像
sinnoo
发布2020-11-13 11:03:48
3.3K0
发布2020-11-13 11:03:48
举报
文章被收录于专栏:技术人生

一、前言

1,有人问我,count查询为啥有时候快有时候慢

2,首先要明白count查询的真正作用

2-1:统计某个列的数量

2-1:统计行数

二、原理

1,统计列时,会查询这个列不为空的数量,它是需要计算的

2,统计行数时,如果不加where,它可以直接取到结果,因为它可以利用存储引擎的特性直接获得这个值,比如count(*)

3,统计列时,如果知道这个列不能为空,会转化为count(*),从而加快速度

所以:你要知道自己要干什么,该怎么样去用

拓展:为啥慢?innodb为聚簇索引同时支持事物,其在count指令实现上采用实时统计方式。在无可用的二级索引情况下,执行count会使MySQL扫描全表数据,当数据中存在大字段或字段较多时候,其效率非常低下(每个页只能包含较少的数据条数,需要访问的物理页较多)

三、实际应用

1,50万条数据,没有索引,大约耗时13分钟

2,50万条数据,有索引,大约耗时354毫秒

3,原理

mysql一个数据页为:16k(默认)

能存16*1024/(4+8) =1365条数据(为什么是4+8可以看看mysql存储页的原理)

假设每页数据耗损不存满,50%

50万条数据,需要500000/1365*2 为 732个物理页

大小为16k*732为11.4M

mysql空间按区分配,一区1M,假设连续的话,需要连续读12个区

pc硬盘转速7200转/分= 70m/s

io寻址时间(11.4*8.5ms=96)+读取时间(11.4m/70m=162ms)= 96+162 = 258毫秒

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、前言
  • 二、原理
  • 三、实际应用
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档