范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

MySQLselectcount()计数很慢,有没有优化方案?

  在日常开发工作中,我经常会遇到需要统计总数的场景,比如:统计订单总数、统计用户总数等。一般我们会使用MySQL 的count函数进行统计,但是随着数据量逐渐增大,统计耗时也越来越长,最后竟然出现慢查询的情况,这究竟是什么原因呢?本篇文章带你一下学习一下。1. MyISAM存储引擎计数为什么这么快?
  我们总有个错觉,就是感觉MyISAM引擎的count计数要比InnoDB引擎更快,实际这不是错觉。
  MyISAM引擎把表的总行数单独记录在磁盘上,查询的时候可以直接返回,不需要再累加统计。
  但是当SQL查询中有where条件的时候,就无法再使用表的总行数了,还是需要乖乖的进行累加统计,查询性能也就跟InnoDB相差无几了。
  为什么MyISAM引擎能够记录表的总行数,InnoDB引擎却不行?
  因为MyISAM引擎不支持事务,只有表锁,所以记录的总行数是准确的。
  而InnoDB引擎支持事务和行锁,存在并发修改的情况。又由于事务的隔离性,会出现不可重复读和幻读,记录的总行数无法保证是准确的。2. 能不能手动实现统计总行数
  既然InnoDB引擎没有帮我们记录总行数,我们能不能手动记录总行数,比如使用Redis。
  其实也是不行的,使用Redis记录总行数,至少有下面3个问题:无法实现事务之间的隔离更新丢失,因为i++不是原子操作,当然可以使用Lua脚本实现原子操作,更复杂。Redis是非关系型缓存数据库,不能当作关系型持久化数据库使用,一般需要设置过期时间。
  由上图中得知,虽然Redis计数加1操作放在了事务里面,但是不受事务控制的,在事务没有提交前,其他查询依然读到了最新的总行数,这就是脏读的情况。3. InnoDB引擎能否实现快速计数
  有一种办法,可以粗略估计表的总行数,就是使用MySQL命令:show table status like "user";
  真实的总行数有100万行,预估有99万多行,误差在可接受的范围内。
  部分场景适用,比如粗略估计网站的总用户数。4. 四种计数方式的性能差别
  常见的统计总行数的方式有以下四种:
  count(*) 、 count(常量) 、 count(id) 、 count(字段)
  InnoDB引擎对count计数做了优化,会选用数据量较小的非聚簇索引进行统计。
  比如用户表中有三个索引,分别是主键索引、name索引和age索引,使用执行计划查看计数的时候用到了哪个索引?CREATE TABLE `user` (   `id` int NOT NULL AUTO_INCREMENT COMMENT "主键",   `name` varchar(100) DEFAULT NULL COMMENT "姓名",   `age` tinyint NOT NULL,   PRIMARY KEY (`id`),   KEY `idx_name` (`name`),   KEY `idx_age` (`age`) ) ENGINE=InnoDB COMMENT="用户表";explain select count(*) from user;
  用到了数据量较小的age索引。
  count(*) 、 count(常量) 是直接统计表中的总行数,效率较高。
  而 count(id) 还需要把数据返回给MySQL Server端进行累加计数。
  最后 count(字段)需要筛选不为null字段,效率最差。
  四种计数的查询性能从高到低,依次是:
  count(*) ≈ count(常量) > count(id) > count(字段)
  对于大多数情况,得到计数结果,还是老老实实使用count(*)
  所以推荐使用select count(*) ,别跟select * 搞混了,不推荐使用select * 的。

曹丕继位后,是怎么隐诛曹彰的?223年,魏文帝曹丕与弟弟曹彰正在母亲卞太后寝宫内下棋助兴。不料,曹彰突然倒地不起,捂着肚子一脸痛苦的指着案几上的一盘枣,问道王兄,为何如此。曹丕不屑一笑现在你还想知道玺绶在哪吗?1947年,5名高级干部遇袭牺牲,毛主席震怒枪毙骑兵连的指导员1947年5月,解放军翼东军分区代表团一行人在柴胡子村被一群土匪偷袭围攻,我军五名高级干部因此牺牲。噩耗传到延安后,大家悲愤异常,坚决要讨回公道。这时,毛主席却下令枪毙负责警卫工作崇祯把魏忠贤一杀,为何大明就垮台了?王承恩说了一句很中肯的话忠贤本市井无赖,中年净身,纵入内地,初犹谬为小忠小信以幸恩,继乃敢为大奸大恶以乱政。杨涟众所周知,在明朝的历史上奸臣宦官很多,而其中最出名的莫过于九千岁魏忠贤。巅峰时期的魏忠贤把持溥仪的贴身侍卫不仅作恶多端,还睡过正宫娘娘,最后毙于刑场在中国近代历史的征程中,有这样一个人物,他年仅三岁就被抱上了皇位,是清朝登基皇帝中年龄最小的一位,国家沦陷时,他被迫退位,成为了中国的最后一位皇帝,这个人就是爱新觉罗溥仪。辛亥革命重新解读历史,你会发现曹操才是汉朝真正的忠臣头条中国史曹操是我们在三国里最熟悉的一位枭雄。他的政治军事,才能也是三国时代数一数二的。历史上对曹操的评价褒贬不一。他出生于宦官家庭,他的父亲是曹崇是东汉宦官曹腾的养子,导致了曹操350万人口国家,走出皇马巴萨主力!总价4亿,国足的69倍英超西甲意甲等欧洲主流联赛暂停,FIFA比赛日隆重登场。这是2022年世界杯之前,各大豪门劲旅珍贵的磨合热身机会。9月20日,乌拉圭国家队球员汇合,引发球迷的关注西甲豪门皇马的当红瑞信2021年全球财富增长41万亿美元,中国贡献四分之一记者辛圆瑞信研究院周二发布的全球财富报告称,2021年全球财富总额是有记录以来增长最快的一年。不过,受通胀利率上升以及资产价格回落等因素影响,财富增长在2022年可能会发生逆转。根学猫叫吮手指裸体穿围裙,这些油腻男星贡献的名场面当代油腻男明星真是层出不穷,一波油腻男过去了又来一波,观众看到他们就仿佛把自己浸泡在了油中,一遍又一遍地对自己反复油炸。1张翰新晋油腻男张翰,他在自编自导自演的东八区的先生们里面表2022年养老金计发基数密集发布部分人养老金会变多中新网9月21日电(记者李金磊)近期,2022年养老金计发基数密集发布,这项数据发布之后,部分人的养老金会进行重算而变多,怎么回事?多地发布2022年养老金计发基数据中新财经不完全灵活就业人员社保基数高于个人缴费基数下限的不用补缴,是真的吗点击上方蓝色按钮,可同步收听全文精彩内容临近十月,网上有关灵活就业人员社保补缴一大笔钱的消息很多,有灵活就业人员咨询,9月起,听说灵活就业人员要从1月起补缴一笔社保费,这到底是真的突发!又有A股董事长被查,并采取留置措施!股价大跌,3000亿巨头紧急回应中国基金报安曼今晚,大家都在静等美联储公布9月利率决议。基金君带大家来看几个国内的财经新闻。21日晚间,经了解,公司同日收到了据了解。楚天龙的主要产品为以金融社保卡标准银行IC卡等
为何长期招聘罐车司机?谢谢邀请!这个问题我个人认为,开罐车比较辛苦,做了一段时间就不想开了,人员更替很快,所以长期招聘才能满足需要一,供需关系失衡就会长期招聘,这个岗位其实一直存在空缺待填的岗位二,单位我想问一下,我是一个一线员工,公司做什么事情都是我们做,福利都是办公室职工的,还有必要在公司待下去吗?说实话,你们公司的旅游野外拓展训练等员工福利只给坐办公室的人享受,不给你们一线员工享受,公司这一点确实做的不地道。但我还是劝你忍了吧,这些福利没有就没有,不能因为这些个福利缺失就想现在郑州彩礼一般多少?确切说,郑州本地人娶本地人,订婚男方出一万一,结婚前出一万一,买三金。结婚时,女方把给的钱再陪送回去一万一,这是基本的。但是,目前本地的经济条件比以前好了,男方送彩礼一万一,女方回海南到广东仅9公里,为何不造一座跨海大桥?别的不说,建设难度太大了海南岛是我国第二大岛,面积仅次于台湾岛,从地图上看海南岛要比台湾岛小很多,但其实这两个岛的面积差不多。海南岛面积3。54万平方公里,而台湾岛的面积为3。58同是铁饭碗,银行招聘与公务员该如何选择?这个我最有发言权了,亲戚有公务员和银行从业的。1。公务员的优势,工作稳定,工作难度相对不大,也不会无缘无故辞退。保障好,五险一金里的医疗保险是公务员保险,与普通的医疗保险更加好。公你和你的研究生导师日常是如何交流的?相信大部分人对研究生导师都有一种敬畏感,日常的交流一般都是围绕学习,课程和论文等。而我最经常说的一句话就是好的,老师。如果不上课的话,有时候一个月也见不到导师,所以日常还是在微信上高中生辛苦学了三年最后没考上本科,是不是还不如上中专32再上个全日制大专?对一这问题应该这么看,首先,考生高中辛苦三年虽没考上本科,升入专科,这不代表人生的失败。因为第一由于受本科招生计划的限制,这就决定了必然有一部分考生本科难以如愿,以辽宁为例,每年大二本院校综合排名350左右,这样的二本毕业好找到工作吗?二本院校三百五十名和一百五十名相比,只是学校综合实力的排名。可能这个对学生的心理作用会有影响,但学习靠自己的努力奋斗,学校只是给了你一个学习的场所和平台。我曾经的一个亲戚孩子高考落准备艺考了,如何找到合适的美术培训专业画室进行集训?应该每天都有同学私信我问这个问题,几乎都是要参加或者即将参加艺考的同学,这是一个很现实的问题,因为这种选择关系到自身未来的发展还有大学是否能考上,杭州的老鹰画室,之江画室及北京的小彩票是买还是不买?实不相瞒我从2008年买彩票,最多一次中了12000多,其他时候就没中国,每次路过彩票店都进去看看。买彩票有时候真的是靠运气运气好了两块钱就能中一等奖,看号码走势看半天还是没头绪,长沙高新区和湘江新区有什么区别吗?高新区由望城区两个街道岳麓区两个街道组成,虽然行政区还在望岳手里,实际掌权在高新区,湘江新区包含岳麓区全部,望城区八个街道,宁乡市四个乡镇,可是没高新区牛逼,高新区有独立的公安局登