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

Java性能调优SQL篇优化分页查询

  作者 | 浩说编程
  来源 | 公众号:浩说编程
  [ 大厂技术资源 | 研发必备安装包 | 限时免费获取 ]
  在日常的业务需求开发中,数据库分页通常被架构封装到方法中直接调用
  但在大数据量的情况下,分页查询是否存在效率问题?
  怎样分析SQL效率?
  如何优化分页查询效率?
  本篇就针对该部分做探讨。一、如何分析SQL性能
  mysql提供了EXPLAIN命令来查看SQL语句的执行计划,其中包含了语句是否有应用索引以及遍历的数据量,举个例子:EXPLAIN SELECT * FROM `user_`;
  执行计划
  以下是执行计划中每个字段的含义:
  1、id:SQL查询中的序列号,id列数字越大越先执行,如果数字一样大,那么就从上往下依次执行。
  2、select_type:查询类型
  SIMPLE
  简单SELECT(不使用UNION或子查询)
  PRIMARY
  最外层的SELECT
  UNION
  UNION中第二个或之后的SELECT语句
  DEPENDENT UNION
  UNION中第二个或之后的SELECT语句取决于外面的查询
  UNION RESULT
  UNION的结果
  SUBQUERY
  子查询中的第一个SELECT
  DEPENDENT SUBQUERY
  子查询中的第一个SELECT, 取决于外面的查询
  DERIVED
  衍生表(FROM子句中的子查询)
  MATERIALIZED
  物化子查询
  UNCACHEABLE SUBQUERY
  结果集无法缓存的子查询,必须重新评估外部查询的每一行
  UNCACHEABLE UNION
  UNION中第二个或之后的SELECT,属于无法缓存的子查询
  3、table:查询的表名
  4、type:查询类型,表示从表中查询到行所执行的方式,查询方式是 SQL 优化中一个很重要的指标,结果值从好到差依次是:system > const > eq_ref > ref > range > index > ALL。
  system
  表中只有一行数据
  const
  通过索引一次就找到了,const用于比较primary key或者unique索引,因为只匹配一行数据
  eq_ref
  使用唯一索引扫描,常见于多表连接中使用主键和唯一索引作为关联条件。
  ref
  对于来自前面表的每一行,在此表的索引中可以匹配到多行,ref可用于使用"="或"<=>"操作符作比较的索引列。
  fulltext
  使用全文索引的时候是这个类型。
  ref_or_null
  跟ref类型类似,只是增加了null值的比较。实际用的不多。
  index_merge
  表示查询使用了两个以上的索引,最后取交集或者并集,常见and ,or的条件使用了不同的索引
  unique_subquery
  用于where中的in形式子查询,子查询返回不重复值唯一值,可以完全替换子查询,效率更高。
  index_subquery
  该连接类型类似于unique_subquery。适用于非唯一索引,可以返回重复值。
  range‍
  索引范围查询,常见于使用 =, <>, >, >=, <, <=, IS NULL, <=>, BETWEEN, IN()或者like等运算符的查询中。
  index
  索引全表扫描,把索引从头到尾扫一遍。
  all
  全表扫描,性能最差。
  5、partitions:分区表命中的分区情况
  6、possible_keys:查询可能使用到的索引都会在这里列出来,查询到的索引不一定是真正被用到的
  7、key:查询真正使用到的索引
  8、key_len:查询用到的索引长度(字节数)。
  9、ref:如果是使用的常数等值查询,这里会显示const,如果是连接查询,被驱动表的执行计划这里会显示驱动表的关联字段,如果是条件使用了表达式或者函数,或者条件列发生了内部隐式转换,这里可能显示为func
  10、rows:mysql估算的需要扫描的行数(不是精确值)。这个值非常直观显示 SQL 的效率好坏, 原则上 rows 越少越好.
  11、filtered:这个字段表示存储引擎返回的数据在server层过滤后,剩下多少满足查询的记录数量的比例,注意是百分比,不是具体记录数。这个字段不重要
  12、extra:额外信息,包含以下几种
  distinct
  在select部分使用了distinc关键字Using
  index
  "覆盖索引扫描", 表示查询在索引树中就可查找所需数据, 不用扫描表数据文件, 往往说明性能不错Using
  filesort
  当 Extra 中有 Using filesort 时, 表示 MySQL 需额外的排序操作, 不能通过索引顺序达到排序效果. 一般有 Using filesort, 都建议优化去掉, 因为这样的查询 CPU 资源消耗大.Using
  temporary
  使用了临时表保存中间结果,mysql在对查询结果排序时使用临时表,常见于order by和分组查询group byUsing
  where
  表明使用了where过滤Using
  join
  buffer
  表明使用了连接缓存,如在查询的时候会有多次join,则可能会产生临时表impossible
  where
  表示where子句的值总是false,不能用来获取任何元祖二、优化大数据量下的分页查询
  在使用分页查询LIMIT M(起始位置),N(偏移量)的时候,虽然我们只需要N条数据,但数据库至少会扫描M+N条数据,如果M足够大,将会产生效率问题,比如这个例子:select * from `demo`.`order` order by order_no limit 10000, 20;
  执行计划
  执行效率
  可以看到,mysql在帮我们获取id从10001~10020的二十条数据的时候,rows字段为10020,也就是说扫描了10020条数据,然后去掉前一万条数据进而获取了我们需要的最后二十条数据,效率问题就产生在数据的扫描量上。
  那么我们是否可以优化一下,毕竟前一万条数据是我们并不需要的。优化建议
  通过子查询的方式,先获取数据起始点id,然后根据该值获取需要的偏移量数据。
  优化之后的语句:select * from `demo`.`order` where id> (select id from `demo`.`order` order by order_no limit 10000, 1)  limit 20;
  执行计划
  执行效率
  通过上面对执行计划的说明可以了解到,id为2的子查询优先执行,并且扫描了10001条数据,然后执行主语句,虽然扫描的数据量并未减少很多,但效率有所提升。
  作者 | 浩说编程
  来源 | 公众号:浩说编程

索尼Xperia1IV提前偷跑升级属实挤牙膏!信仰充值很难下手日前,索尼已宣布将于5月11日下午3点发布Xperia新品,主角毫无疑问将是全新的索尼Xperia系列手机。而在发布之前,网络上已经完全曝光了这款新旗舰的所有参数,以及渲染图,发布千合资本调研国芯科技厦钨新能等6只个股根据5月9日披露的机构调研信息,知名私募千合资本对6家上市公司进行了调研,相关名单如下1)国芯科技(证券之星综合评级2。5星市盈率5844。55)个股亮点公司基于自主可控的嵌入式C关于魅族的一点看法提起魅族,许多煤油热泪盈眶,可随着时间流逝煤油一年比一年大幅缩减,魅族是MP3起家,iphone诞生后,黄章看到了智能手机的前景,果断砍掉mp3业务,不过当时mp3行业已经下下坡路汇编笔记(1)1。c语言概述c17汇编XMM寄存器64位执行环境基本元素内部数据类型数据相关的运算符与伪指令offset按字节计算的偏移量ptrtype判断类型lengthof计算数组有多少元素新车新连发哪吒U智哪吒V潮焕新上市!为年轻人刷新智能电动汽车上限哪吒U智哪吒V潮上市4月6日,哪吒汽车旗下两款主力产品同步迎来2022款车型上市哪吒U智和哪吒V潮,树立同级智能潮酷体验风向标。秉承哪吒汽车科技平权的价NFC应用场景,你用了几个?大家对NFC应该都不陌生,日常生活中即便没用过但或许也都听过,随着NFC技术的不断发展及普及,越来越多的智能手机都增加了这一功能,那么,NFC功能到底是什么?有哪些用处呢?什么是N1199元!索尼LinkBuds耳机发布音质比苹果好多了2月16日消息,索尼LinkBuds真无线耳机,拥有新型环形驱动单元,支持广域点击操控,不支持降噪,预售价为1199元。LinkBuds最主要的特色是硕大的驱动单元,中间是中空的,入坑中古相机,这几款还不错本内容来源于什么值得买APP,观点仅代表作者本人作者MixKong前言本人玩胶片相机十几年,谈不上资深,但也算半个行家,平时没啥爱好,就是对中古相机情有独钟,此篇文章仅代表个人观点相机的电子快门和机械快门有什么区别?哪个更好?我认为电子快门是用线圈与电容来控制帘幕行走的速度与缝隙的,机械快门是老式相机所采用的它的结构齿轮弹簧等精密零件,不用电池。现在的单反都说是机械快门就是过去的电子快门吧。现在的电子快拍人像,3万元怎样添套照相设备?3W的预算用来添置人像的设备的话,精打细算也可以,如果要考虑后期修图的设备估计不太够,我来看看3W预算能买到啥!先来看看佳能单反吧,佳能目前平民极的专业单反就是5D4了,人像拍摄肯尼康D750配适马art351。4还是501。4镜头呢?如果资金够用,又是喜欢人文的,就这两个定焦镜头而言,我建议选351。4的,501。4更适合人像拍摄(半身像居多),F1。4大光圈镜头对背景虚化效果非常出色,选择这个品牌的定焦镜头主
是创新还是坑爹?南卡RunnerPro3骨传导蓝牙耳机南卡RunnerPro3骨传导蓝牙耳机大红配色很喜庆,当做新年礼物也非常合适。NANK南卡Runner299购买其多个优点是它适用所有日常运动场景,因为这款耳机内置了MP3音乐播放原来耳机还可以这么酷,哈氪零度无线耳机要音质更有颜值在无线蓝牙耳机成为刚需的时代,从形形色色的耳机中,想要寻找一款在价格和功能乃至外观上都满意的耳机产品是十分不易的。众多耳机厂商也意识到了用户的需求,便在产品类别上做了不少文章。于是青海省铬盐新工艺项目荣获全国颠覆性技术创新大赛优胜奖近日,由青海省科技厅组织推荐的全国颠覆性技术创新大赛项目铬铁电化学氧化技术制备铬盐工艺研发与示范,在与来自全国高校科研院所高新技术企业等的129个项目的角逐中脱颖而出,获得领域赛苏服务器租用一般包括哪些费用?服务器租用可以考虑下租用云服务器或者租用裸金属服务器,相比传统的租用物理服务器更便宜些,也不用自己进行维护,更简单(不过要找有服务保障的,能够及时响应需求的)简单说下云服务器的费用腾讯用心助力实体经济2022年1月1日,腾讯助力实体经济在央视播出。一分钟的短片恢宏大气,科技感与现实场景融合,智慧能源智慧交通AI种植智能制造智慧零售等数字技术与实体经济融合的图景徐徐展开,以点带面谁将在数字经济的未来担当大任?工业互联网平台是数字经济的主角理由是1工业互联网平台是企业实施数字化转型的必由之路。3工业互联网平台是数字经济各项技术最大的应用场景,5G工业元宇宙数字孪生等技术构成平台功能。4过工信部5G工业互联网在建项目超过2000个中新财经1月20日电20日,国新办就2021年工业和信息化发展情况举行发布会,工业和信息化部总工程师新闻发言人田玉龙在发布会上表示,2021年工业互联网平台有全国影响力的已经超过了数字经济浪潮下,数字藏品或将破圈成新风口?随着我国数字经济领域顶层规划出炉,数字化进程持续加速,数字经济已成为经济发展的重要引擎。中国数字经济发展白皮书(2021)数据显示2020年我国数字经济规模达39。2万亿元,占GD你的华为手机最长用了多长时间?谢邀我的华为手机已用三年了,还能用,除了慢之外,其它功能还可以。用了4年!Mate9之前用过三部华为手机,第一部型号好像是8813,16年买了Mate9,一直用到Mate40系列发空调之王易主,市值蒸发约2000亿,如今的格力怎么了?相信很多人都不知道,就在前段时间,我国2021年全年的经济运行情况被公布了,据国家统计局相关数据显示,我国在2021年实现GDP达114。4万亿元,换算成美元约达17。7万亿美元,段永平体验OPPOFindN,他是这样点评的段永平知道是谁吗?此人被称之为中国的巴菲特,是步步高集团的创始人,也是OPPOvivo幕后最大的大佬。只是此人一直在海外居住,近些年来极少出现在公众场合。但是他对于OPPOvivo