位置: 编程技术 - 正文

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关联语句)

  • 税收的经济效应是指税收对纳税人生产
  • 什么是工程销项表
  • 税务局报税怎么操作流程
  • 所得税预缴申报表资产总额怎么填
  • 出口关税的计算基数
  • 电力工程服务费计入什么科目
  • 发票校验码被章盖住了
  • 咨询公司要交税吗
  • 季度盈利可以弥补以用以前年度亏损弥补
  • 社会团体财政票据管理制度
  • 总公司和分公司类型必须一样么
  • 电子承兑汇票如何贴现网银操作
  • 人力资源代缴社保合法吗
  • 视同销售存货账务处理方法是什么?
  • 企业计提短期借款利息费用应贷记的会计科目是
  • 净现值为什么要除以它的折现率
  • 3%的增值税专用发票可以退税吗可以抵扣吗
  • 固定资产房屋折旧年限及残值
  • 补交以前年度增值税的科目处理
  • 公司在银行购买金币没有发票
  • mac如何配置
  • php输出mysql查询结果
  • window10怎么创建wifi
  • 获取当前位置被拒怎么办
  • 消费税组成计税价格公式推导
  • 电脑关机了wifi还能检测到在线
  • 代开票作废税未退该如何分录?
  • 营业外收入增加说明什么问题
  • 第4章 数据处理思维导图
  • 分析卡拉哈迪沙漠的形成原因
  • 企业所得税合理方法包括
  • php常见的错误级别
  • php分割数组
  • 法定盈余公积使用于什么
  • 纳税人填报的纳税申报表
  • 不动产固定资产清理
  • 矿产资源补偿费计入税金及附加吗
  • 金税盘开票如何增加商品编码
  • 发票开具的常见错误以及盖章问题
  • 企业重组后的债权怎么算
  • Sqlite数据库里插入数据的条数上限是500
  • 国税办税人员怎么解绑
  • 进项税通俗易懂
  • 本月盈利本年亏损要做分录吗
  • asp 数据库
  • 土地出让金抵减增值税申报怎么填
  • 固定资产的核算内容包括
  • 预收账款转主营业务收入怎么描述
  • 从事国家重点扶持的公共基础项目
  • 加油费不征税发票可以报销吗
  • mysql查询分组后 组内数据
  • sql server数据库使用
  • sqlserver存储过程在哪
  • fedora 10
  • 怎么用u盘装xp系统教程
  • winpe安装
  • 海尔笔记本最新款
  • win32k.sys是什么
  • centos关闭开机启动项
  • ubuntu zed
  • xp系统纯净版gho
  • linux的文件和目录的区别
  • shell32.exe - shell32是什么进程 有什么用
  • win10鼠标移动速度怎么设置
  • js解释器有哪些
  • 苏州大学附属第一医院占地面积
  • css制作热点新闻板块
  • js array insert
  • 关于学习的名言
  • unity f1
  • node react vue
  • 细说java
  • python的例子
  • android开发指南
  • python中lxml模块
  • 电子税务局领取纸质发票的步骤
  • 执法服务不到位
  • 企业所得税年报职工薪酬纳税调整明细表
  • 宁波离哪个国家比较近
  • 生产企业出口退税账务处理会计分录
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设