count 【mysql】
如果你的需要是统计总行数时,为什么要使用count(*),而避免使用指定具体的列名?
count()函数里面的参数是列名的的时候,那么会计算这个字段有值项的次数。也就是,该字段没有值的项并不会进入计算范围(就是网上常说的值为null的项不纳入统计)
很多地方都有类似表述:
COUNT ( column ) counts all non-NULL occurences (or should … 计算所有column字段为"非null"值的总数。
COUNT ( * ) counts all rows.
这样的话,你想统计的行数并不准确。更重要的是,还会增加消耗。因为,需要判断扫描所有行才知道值是否有值。
一般是建议以count(字段名)替代count(*)。实际使用中,我的理解是,你要统计那个列的总数,比如我想统计会员的总数,那么我可以以uid作为参考,uid是null的都不去扫描了
于是查询就是select count(uid) from members
如果使用count(*),它会计算总行数。不管你字段是否有值都会列入计算范围。
另外一点:myisam引擎很容易获得总行数的统计。查询速度变得更快。因为myisam存储引擎已经存储了表的总行数。
应该是每次新增加一行,这个计数器就加1。英文资料是这样子说的:
On MyISAM, doing a query that does SELECT COUNT(*) FROM {some_table}, is very fast, since MyISAM keeps the information in the index
也就是说,把表的总数缓存在索引中了。
注意一点:myisam存储引擎的表,count(*)速度快的也仅仅是不带where条件的count。这个想想容易理解的,因为你带了where限制条件,原来所以中缓存的表总数能够直接返回用吗?不能用。这个查询引擎也是需要根据where条件去表中扫描数据,进行统计返回的。
归纳:实际编程中统计总行数是经常用到的。此时使用count(*)多处可见。我很少看到有人使用列名作为参数:count(a)的情况。即使是这样使用,可能其初衷也是想统计行数。只是不知道这样所造成的细微差异而错误使用了"列名"的形式。
针对Innodb表,尽量不执行 SELECT COUNT(*)
语句,因为Innodb表没有类似MyISAM那样的内部计数器来记录表记录总量,执行这个操作将会全表扫描,速度很慢。所以呢,表的行数越多,扫描的时间就越多。当你表行数还是小数量的时候体会不出速度差距。比如百万也感觉不出明显。上千万就会很明显速度差别了。
对策:对innob存储引擎的大表进行select count()统计总数操作,业界都会尽量避免。
如果要查询innodb存储引擎的表总数,要怎么办?
总结两种方案:
方案一:通过查询information_schema库,它记录了innodb类型每个表大致的数据行数
aaarticlea/png;base64,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z/r+9+W7DjyQFiywxoyJWSUAAAAAVAnMGgMlhT//bdSsC6QzyKX9Pr7+pmvwVhoAAACgPsCzxkBJ6YhDup57akD2NEnhldeaTz4rt+z1+LUCAAAAQOQgIgRaWprXzbu355uSB9LdVxUm+FaajoWdW2+7d1K1gwTBoQfRgjMKAEJECEzovezC4tx77dGjuPRccd2oiy/HqwoBAACAWgcRITDCnUEuyRYOjrr48qbvXh+/SgAAAACIisKS5940zevQ5EP2qKYy1SKAjVTDZhLRUwuXtrS0NDc3jxo1auTIkcOHD29oaCCigYGBTZs2bdy4cf369cVisbu7e9qU1sDSW5qLC+Y1fee6EXfM4faMuP0ea926FL6q8Pftfw2U/4Tph1ZJk6qSnTM8HPaS50t33ls478zc5IOS1mWQXz+4MFD+L50+pUqagEC8887y+Y+1X3zReUkrUi1eeunVH1z9U+/nI7+7O0Flqk3dH82gl4bCuHHjVHtvuOEXl112off/7LPPiEDBhMiImeVyeY899iCilStXLl26dOXKlWvWrCGirbfeescdd9x555133HHHbbbZ5q9/DRYnsfT88PKBIw7Z6qJvc88gD//t3Ny7K9bffQu1NFdoRbSceeaZ3va9996r/xmrZpGSkTM8EGvWzh0YWElEw259badd91hx6119E/7i7ho9+j+aRiS8bmzap45X7brl7vkXnTPD+7/Pjo1xKhYhS15ctqaraJh56zHNkw+cVFV9Kmf+Y+3z/7f9gAP2bTv68KR1qQoHHLCvGwXe++uHlr60LGl1qkvdH00KeGkoLFiwQJX7E5/YZ8GCBd7/cqkkqWz8RDFRfKONm83kTTfjxk9UZTOsS6RcKsVjppfZV6tqmElEB39yr2effXb69OmjR4/eZx/5q2Ha29snHyLfxWml+jkwfWr3gkdHn31hYeizxo1//lvzKWcXH57tBYVVMjMQH330kflPDqmSHp62rJm+R1+VQVOXb7NUfob7qifuNc/JpauKRH70+/uXT5ywX6k08MFZ5c7L/7D29OOOHb1H8+jcv95fUSy2E5FvUKg/gTWdxYTe9WtUu7586pG969d4///87N/CKembQXpApfnNE1nWrOk68wtf1mRguff+X4nyNfmlmot7o6Xzmb/cfedNN99yZ+gYwrsahutBJDtq5ieqIS+99OrSl5bd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" alt="" />
方案二(更优):涉及到总数操作,专门维护一个总数。新注册一个会员,总数值加1,需要总数的时候直接拿这个总数,比如分页时。
方案二的扩展性更好,随着会员表数量增大,水平切分会员表,要获取用户总数。可以专门看这张表。
aaarticlea/png;base64,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" alt="" />
在网上看到有人问自己的innodb存储引擎的表数据行数到10亿了,要进行分页,count(*)操作很慢怎么解决。
其实像对大数据量进行统计总数的操作,并不是要求非常精准的总数,没好多人关心差几个。像网易,凤凰网这些新闻有很多人评论,这个评论总数,如果每次点击分页的时候都进行一次count操作,那速度肯定不会快到哪里去。他们一般也是采用计数器的办法。每次新增加一条评论,就把值加1。这样分页的时候直接拿这个总数进行分页。
总数可能是存在内存中,这样分页计算的时候速度很快。累加操作的时候将内存中的值加1。总数这个值要持久化,还是要存到磁盘上的,也就是数据库中(可以是关系型数据库,也可以是mongdb这样的数据库很适合存储计数)。把总数放在内存中,只是避免频繁的磁盘i/0操作(操作数据库就要涉及到磁盘读写)。
ps:这种计数器的思想在计算机的很多地方都会用到。比如mysql数据库他自己的information_schema库维护每个表的row总数,就是这样的方式。
我有个疑问:针对innodb存储引擎,使用count(1)替代count(*)就避免全表扫描,速度很快吗?
orcalce数据库有专门对count(1)和count(*)的区别。
count(1)其实这个1,并不是表示第一个字段,而是表示一个固定值。
count(1),其实就是计算一共有多少符合条件的行。
1并不是表示第一个字段,而是表示一个固定值。
其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.
同理,count(2),也可以,得到的值完全一样,count('x'),count('y')都是可以的。一样的理解方式。在你这个语句理都可以使用,返回的值完全是一样的。就是计数。
count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。 count(1)就是不指定具体字段,固定值。 网上找不到源码分析出count(1)到底做了什么。如果参考oracle数据库的解释,其实也不见得就能避免全表扫描
count 【mysql】的更多相关文章
- 【MySQL】结构行长度的一些限制
今天被开发提交的DDL变更再次困惑,表中字段较多,希望将已有的两个varchar(4000)字段改为varchar(20000),我想innodb对varchar的存储不就是取前768字节记录当前行空 ...
- 【MySql】赶集网mysql开发36条军规
[MySql]赶集网mysql开发36条军规 2012-05-14 14:02:33 分类: Linux 写在前面的话: 总是在灾难发生后,才想起容灾的重要性: 总是在吃过亏后,才记得曾经有人提醒 ...
- 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装
[MySQL]Linux下MySQL 5.5.5.6和5.7的RPM.二进制和源码安装 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后, ...
- [赶集网] 【MySql】赶集网mysql开发36条军规
[赶集网] [MySql]赶集网mysql开发36条军规 (一)核心军规(1)不在数据库做运算 cpu计算务必移至业务层:(2)控制单表数据量 int型不超过1000w,含char则不超过50 ...
- 【MySQL】经典数据库SQL语句编写练习题——SQL语句扫盲
[MySQL]数据库原理复习——SQL语言 对基本的SQL语句编写的练习题,其中的题目的答案可能会有多种书写方式. 1.题目1 1.1 关系模式 学生student:SNO:学号,SNAME:姓名,A ...
- 1229【MySQL】性能优化之 Index Condition Pushdown
转自http://blog.itpub.net/22664653/viewspace-1210844/ [MySQL]性能优化之 Index Condition Pushdown2014-07-06 ...
- 【MySQL】drop大表
利用硬链接和truncate降低drop table对线上环境的影响 众所周知drop table会严重的消耗服务器IO性能,如果被drop的table容量较大,甚至会影响到线上的正常. 首先,我们看 ...
- 【MySQL】JDBC连接MySQL的一些问题以及解决办法
[MySQL]JDBC连接MySQL的一些问题以及解决办法 http://blog.csdn.net/baofeidyz/article/details/52017047
- 【Linux】【MySQL】CentOS7、MySQL8.0.13 骚操作速查笔记——专治各种忘词水土不服
1.前言 [Linux][MySQL]CentOS7安装最新版MySQL8.0.13(最新版MySQL从安装到运行) 专治各种忘词,各种水土不服. - -,就是一个健忘贵的速查表:(当然不包括SQL的 ...
随机推荐
- Xilinx Altera FPGA中的逻辑资源(Slices VS LE)比较
前言 经常有朋友会问我,“我这个方案是用A家的FPGA还是X家的FPGA呢?他们的容量够不够呢?他们的容量怎么比较呢?”当然,在大部分时候,我在给客户做设计的时候,直接会用到最高容量的产品,因为我们的 ...
- 【leetcode 简单】 第六十五题 2的幂
给定一个整数n,判断它是否为2的次方幂. 方法:2,4,8都是2的n次幂 任何整数乘以2,都相当于向左移动了一位,而2的0次幂为1,所以2的n次幂就是1向左移动n位.这样,2的幂的特征就是二进制表示只 ...
- MeasureSpec介绍及使用详解
一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求.一个MeasureSpec有大小和模式组成.他有三种模式: UNSPECIFIED ...
- 【CTF WEB】文件包含
文件包含 题目要求: 请找到题目中FLAG 漏洞源码 <meta charset='utf-8'> <center><h1>文件阅读器</h1>< ...
- XXX变种-防火墙放行自身
1.利用防火墙命令放行自身手法 netsh firewall add allowedprogram "C:\Users\USER\AppData\Local\Temp\Discord Can ...
- gc overhead limit exceeded内存问题
gc overhead limit exceeded 当出现这种问题的时候一般有两种思路 一.修改idea或者eclipse中的配置文件,将内存调到1024即可 二.在代码中通过system.gc 手 ...
- Codeforces 981D Bookshelves(按位贪心+二维DP)
题目链接:http://codeforces.com/contest/981/problem/D 题目大意:给你n本书以及每本书的价值,现在让你把n本书放到k个书架上(只有连续的几本书可以放到一个书架 ...
- babel转换不了有些es6
bable只转换新语法 不支持新的全局变量如promise async等等,可以使用babel-polyfilll来兼容
- ROS二进制日志包 ROS binary logger package
原文网址: 1 http://www.ros.org/news/2017/02/ros-binary-logger-package.html 2 https://github.com/CNR-ITIA ...
- Linux学习笔记:ctrl+z、ctrl+c、ctrl+d的区别
ctrl+c和ctrl+z都是中断命令,但是他们的作用却不一样. 1.ctrl+c是强制中断程序的执行,进程已经终止. 2.ctrl+z的是将任务中止(暂停的意思),但是此任务并没有结束,他 ...