当前位置:首页 > MySQL教程 > 正文内容

mysql大表中count()的用法以及mysql中count()的优化【MySQL教程】,python,mysql

搜教程4年前 (2019-12-01)MySQL教程155
本篇文章给人人带来的内容是关于mysql大表中count()的用法以及mysql中count()的优化,有肯定的参考价值,有须要的朋侪能够参考一下,愿望对你有所协助。

一个单表中包括有6000w+的数据,然则你又不能拆分.须要离别统计表中有若干数据,A产物有若干,B产物有若干这几个数据.

在为优化之前.表构造以下,为了隐蔽内容我将响应字段做了隐约化处置惩罚.

CREATE TABLE `xxxx` (
  `link` varchar(200) DEFAULT NULL,
  `test0` varchar(500) DEFAULT NULL,
  `test1` varchar(50) DEFAULT NULL,
  `test2` int(11) DEFAULT NULL,
  `test3` varchar(20) DEFAULT NULL,
  `test4` varchar(50) DEFAULT NULL,
  `test5` varchar(50) NOT NULL,
  `inserttime` datetime DEFAULT NULL,
  `test6` bit(1) NOT NULL DEFAULT b'0',
  `A` bit(1) NOT NULL DEFAULT b'0',
  `B` bit(1) NOT NULL DEFAULT b'0' ,
  PRIMARY KEY (`test5`),
  KEY `test6` (`test6`) USING BTREE,
  KEY `A` (`A`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

这个一个通例的InnoDB的表格,所以它的count(*)比起MyISAM的效力慢许多,InnoDB所显现的row的行数不很正确,所以在这这里我须要统计一下.有这么几个战略.
总计61500000数据

count(*) 耗时 1539.499s

count(1) 耗时 907.581s

count(A) 对索引举行count.

count(test6) 对主键举行count.

无一例外,因为这个表没有优化好上面不管哪种都须要几千秒的时刻,这个是我们无法忍受的.

下面我们最先动手剖析处置惩罚这个题目.

预期全部表的count(*)应该在200s之内为一般,100之内为优越,50之内为优异.

起首我将内里test6抽取了出来,零丁形成了一个表.对其举行操纵.
总计61500000数据

count(*) 耗时10.238s

count(1) 耗时8.710s

count(test6) 对主键举行count.耗时12.957s

个中count(1)的效力最高,比最慢count(pk)速率提升了52.0%.

将你能肯定的字段改成最优值,比方:

varchar更加char.虽然varchar能够自动分派存储空间的大小然则.varchar须要运用1到2个分外的字节来纪录字符串的长度,增添它的update的操纵时刻,

datetime改成timestamp后者在1978-2038年之间

末了运用count(1)磨练的时刻最快耗时,168s.虽然有些慢然则能够接收.

总结:

从新设想你表中的字段,只管优化它的长度.不要一味运用过量的varchar.

运用count(1)而不是count(*)来检索.

相干引荐:

mysql中无限极分类的代码完成

Mysql数据库优化的要领总结(必看)

以上就是mysql大表中count()的用法以及mysql中count()的优化的细致内容,更多请关注ki4网别的相干文章!

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/15539.html

标签: pythonmysql
分享给朋友:

“mysql大表中count()的用法以及mysql中count()的优化【MySQL教程】,python,mysql” 的相关文章

MYSQL完成防备增加购物车反复的代码实例【MySQL教程】,MYSQL,购物车,添加

在向mysql中插进去数据的时刻最须要注意的就是防备反复发增加数据,下面这篇文章主要给人人引见了关于MYSQL怎样完成增加购物车的时刻防备反复增加的相干材料,文中经由历程示例代码引见的异常细致,须要的朋侪能够参考自创,下面来一同看看吧。 媒介 近来由于事情的缘由,在做APP购物车下单付出这一...

MySQL高可用解决方案MMM详解【MySQL教程】,MySQL,解决方案,详解

MySQL高可用解决方案MMM详解【MySQL教程】,MySQL,解决方案,详解

MySQL自身没有供应replication failover的解决计划,经由过程MMM计划能完成效劳器的毛病转移,从而完成mysql的高可用。MMM不仅能供应浮动IP的功用,假如当前的主效劳器挂掉后,会将你后端的从效劳器自动转向新的主效劳器举行同步复制,不必手工变动同步设置 一、MMM简介:...

mySQL用代码增加表格内容和删除数据要领【MySQL教程】,mySQL,内容,表格

经由过程代码对表格内容操纵: 1、增加数据 insert into Info values('p009','张三',1,'n001','2016-8-30 12:9:8') ; 给特定的列增加数据insert into Info (code,name) values('p010',...

Navicat for MySQL定时备份数据库及数据恢复操纵【MySQL教程】,Navicat,MySQL,数据库

Navicat for MySQL定时备份数据库及数据恢复操纵【MySQL教程】,Navicat,MySQL,数据库

在做数据库修正或删除操纵中,可能会致使数据毛病,以至数据库奔溃,而有用的定时备份能很好地庇护数据库。本篇文章重要报告Navicat for MySQL定时备份数据库和数据恢复等功能,同时能够定时播放影戏等设置,愿望对您有所协助,假如文章中存在毛病或不足之处,还请包涵~ 一. 设置设计使命定...

MySQL两种引擎的有什么区别【MySQL教程】,MySQL,区别,什么

Innodb引擎 Innodb引擎供应了对数据库ACID事件的支撑,而且完成了SQL规范的四种断绝级别。该引擎还供应了行级锁和外键束缚,它的设想目的是处置惩罚大容量数据库系统,它本身实在就是基于MySQL背景的完全数据库系统,MySQL运行时Innodb会在内存中竖立缓冲池,用于缓冲数据和索引。然...

CentOS中Mysql装置要领【MySQL教程】,CentOS,Mysql,方法

Mysql布置文档 操作系统:CentOS Linux release 7.4.1708内核版本:3.10.0 # 手动装置1> 将mysql-5.5.54-linux2.6-x86_64.tar.gz上传至CentOS效劳器/tmp目录下 2> 解压压缩包至/usr/loca...