位置: 编程技术 - 正文

MySQL的id关联和索引使用的实际优化案例(mysql关联查询原理)

编辑:rootadmin

推荐整理分享MySQL的id关联和索引使用的实际优化案例(mysql关联查询原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql关联关系,mysql关联语句,mysql关联查询原理,mysql关联语句,mysql关联查询使用什么关键字,mysql关联语句,mysql关联查询使用什么关键字,mysql关联关系,内容如对您有帮助,希望把文章链接给更多的朋友!

昨晚收到客服MM电话,一用户反馈数据库响应非常慢,手机收到load异常报警,登上主机后发现大量sql执行非常慢,有的执行时间超过了s优化点一:

表结构为:

执行计划:

分析该sql的执行计划,由于tran_id是表的主键,所以查询根据主键降序顺序扫描,这样就可以不用排序,然后在过滤条件price>2.的记录,看上去这个执行计划貌似非常好,如果查询扫描到了满足条件的条记录,就会停止扫描;但是这里有个问题,如果表中有大量的记录是不符合2.的,意味查询就需要扫描非常多的记录,才能找到符合条件的条:

可以看到表中有大量的记录不是2.的,所以这个时候不能在根据主键顺序扫描,在过滤记录;那么是否需要在price建立一个索引:

从上面price的数据分布可以看出,price的分布相对还是比较集中的,如果在price建立索引,mysql也有可能认为由于需要回表的记录过多,同时需要额外的排序,而不选择在price上的索引:

MySQL的id关联和索引使用的实际优化案例(mysql关联查询原理)

可以看到优化器虽然注意到了我们新加的索引,但是最终还是选择了primary来扫描;所以这个时候我们加上去的索引没有产生效果,数据库负载依然很高,如果强制走price上的索引,效果会这样:

可以看到如果强制走索引,时间已经明显下降了,但是还是有些慢,能不能在快一点?其实我们需要扫描的记录只有条,但查询在取得这条记录的时候需要扫描大量无效的记录

怎么降低这个数据:其实只要改写一下sql就可以,我们先从索引中得到满足条件的个id,在回表进行关联:

可以看到执行时间已经不在秒级别了,和客户电话沟通后,很愿意这样改写sql。

—这里看到是order by tran_id是要额外排序的,索引也可以这样来建立消除排序(tran_id,price)这样可以消除排序,同时可以利用order by desc/asc +limit M,N的优化。

优化点二:

查询为select `session_data`, `session_expires` from `game_session` where session_id='xxx'出现大量等待情况同时该表的insert,也有等待的现象;可以看到这个表结构设计是有些问题的,咨询了客户后,可以改为下面结构:

小结:

新增自增主键id作为表的主键,这样对插入的性能提升是很好的,同时也降低了表主键的大小; 将session_data由text改为了varchar(),咨询了客户后,这个字段可以不用大字段存储,同时有text改为了varchar,就可以冗余到索引中; 由于查询可以使用覆盖索引来完成,所以将查询的3个字段冗余到索引中,查询通过索引完成,不用回表

MySQL在关联复杂情况下所能做出的一些优化 昨天处理了一则复杂关联SQL的优化,这类SQL的优化往往考虑以下四点:第一.查询所返回的结果集,通常查询返回的结果集很少,是有信心进行优化的;

对MySQL子查询的简单改写优化 使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该

分析MySQL中优化distinct的技巧 有这样的一个需求:selectcount(distinctnick)fromuser_access_xx_xx;这条sql用于统计用户访问的uv,由于单表的数据量在G以上,即使在user_access_xx_xx上加上nick的索

标签: mysql关联查询原理

本文链接地址:https://www.jiuchutong.com/biancheng/347326.html 转载请保留说明!

上一篇:浅谈MySQL中的子查询优化技巧(mysql子句)

下一篇:MySQL在关联复杂情况下所能做出的一些优化(mysql关联语句)

  • 期初未缴税额是什么意思
  • 高新企业要求研发投入
  • 增值税发票什么时候认证
  • 电子产品配件批发市场
  • 从业人数和资产的关系
  • 企业所得税收入是什么意思
  • 股利支付率怎么找数据
  • 无法收回的应收账款情况说明
  • 企业所得税中的不征税收入有哪些
  • 律师事务所日常管理松懈混乱整改措施
  • 二手房房产税税率
  • 财税[2010]121号中的宗地容积率指的是什么?
  • 增值普通发票税率怎么算
  • 的税收分类编码
  • 设定受益计划资产上限
  • 子公司借款给母公司是否受2:1
  • 年终奖个人所得税缴纳标准
  • 废品损失账户借方反映
  • 税收分类编码选错会怎样
  • 给员工购买的意外保险可以税前扣除
  • 小米路由器启动不了
  • Windows10如何解压rar
  • 个人交五险一金和单位交五险一金的区别
  • 劳务公司发放农民工工资要开发票吗?
  • 清算中无法偿还的债务
  • 苹果系统权限管理在哪找
  • php到底是什么
  • linux系统已经得到了广泛的应用
  • 安保费差额纳税是什么意思
  • 下列关于企业发生的税费说法正确的是
  • PHP:ftp_nb_get()的用法_FTP函数
  • 如何搭建chatGPT
  • ecshop功能
  • 矿产资源补偿费计入科目
  • 房产营销策划经典案例
  • 审核过程中发现的问题应由被审核部门实施纠正
  • 2022最新廉洁警示语句
  • 阿罗内镇的村落叫什么
  • 原材料入账价值包括代垫运费吗
  • cesium description
  • 蓝桥杯2021出结果
  • function函数的定义
  • day01-GUI坦克大战01
  • 织梦网站怎么添加关键词
  • ❤️国庆假期快到了,用python写个倒计时程序,助你熬到假期!❤️
  • 无形资产减值准备可以转回吗
  • 资产处置损益是当期损益吗
  • 进项税大于销项税怎么抵扣
  • 小规模申报表填写模板
  • 什么是品种法?适用于什么范围?
  • 代开发票要带什么资料?
  • 设备融资租赁如何算综合利率
  • 水利建设基金计提会计分录
  • 上年结转会计分录
  • 税控系统专用设备抵减增值税账务处理
  • 增值税是什么的抵减项目
  • 发票开商品类别可以报销吗
  • 收付实现制与权责发生制的例题
  • 业务招待费可以开专票抵扣吗
  • 房屋销售预收如何交税
  • 在建工程领用物资进项税
  • 什么是加计扣除农产品进项税额
  • mac开机后蓝屏没反应
  • freebsd的软件管理工具ports详解
  • win10 edge浏览器在哪里
  • raid磁盘阵列教程
  • shell脚本如何注释
  • dos命令可以做什么
  • python函数菜鸟教程
  • apktool修改包名
  • linux如何批量执行脚本
  • &&在js中
  • unity怎么设置多个关卡
  • unity 断点
  • javascript的弹窗
  • javascript静态
  • 陕西省税务局电子税务局官网
  • 国家税务局什么时候放假
  • 营业执照增加项目怎么办理
  • 300万加币在加拿大能过什么样生活?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设