登录  /  注册

mysql大表中count()的用法以及mysql中count()的优化

不言
发布: 2018-08-22 09:35:20
原创
3782人浏览过

本篇文章给大家带来的内容是关于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()的优化的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号