加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

DBA大牛MySQL优化心得,语句执行加速就是这么简单!

发布时间:2019-06-01 04:21:33 所属栏目:编程 来源:老王谈运维
导读:一打开科技类论坛,最常看到的文章主题就是MySQL机能优化了,为什么要优化呢? 由于: 数据库呈现瓶颈,体系的吞吐量呈现会见速率慢 跟着应用措施的运行,数据库的中的数据会越来越多,处理赏罚时刻变长 数据读写速率迟钝 就是咱们说的机能题目,措施员一碰着它

一打开科技类论坛,最常看到的文章主题就是MySQL机能优化了,为什么要优化呢?

由于:

  • 数据库呈现瓶颈,体系的吞吐量呈现会见速率慢
  • 跟着应用措施的运行,数据库的中的数据会越来越多,处理赏罚时刻变长
  • 数据读写速率迟钝

就是咱们说的“机能题目”,措施员一碰着它老是焦头烂额!

本日小编对MySQL优化总结了一些心得,但愿在各人之后的事变中能有全部辅佐!

MySQL机能优化

like 前导符优化

like恍惚查询形如'%AAA%'和'%AAA'将不会行使索引,可是营业上不行停止也许又必要行使到这种情势。

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

凡是的要领有两种:

  • 优化方案一:行使包围索引,即查询出的列只是用索引就可以获取,而无须查询表记录,这样也走了索引;
  • 优化方案二:行使locate函数可能position函数取代like查询:如table.field like '%AAA%'可以改为locate('AAA', table.field) > 0或POSITION('AAA' IN table.field)>0

in 和 exist

假如查询的两个表巨细相等,那么用in和exists不同不大。 假如两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in: 譬喻:表A(小表),表B(大表)

示例一:

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

示例二:

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

not in 和 not exist

假如查询语句行使了not in 那么表里表都举办全表扫描,没有效到索引;而not exist 的子查询依然能用到表上的索引。以是无论哪个表大,用not exists都比not in要快!

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

子查询优化

  • MySQL 5.6 之前的版本对子查询处理赏罚:不会将查询的功效集计较出来用作与其他表做join,outer表每扫描一条数据,子查询城市被从头执行一遍。
  • MySQL 5.6 对子查询的处理赏罚 :将子查询的功效集 cache 到姑且内外,姑且表索引首要用来移除一再记录,而且随后也也许用于做join查询,这种技能在 5.6 中叫做物化的子查询,物化子查询可以看到select_type字段为subquery,而在 5.5 里为DEPENDENT SUBQUERY。
  • 子查询一样平常都可以改成表的关联查询,子查询会有姑且表的建设、烧毁,服从低下。

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

straight_join

mysql hint:

Mysql 优化器在处理赏罚多表的关联的时辰,很有也许会选择错误的驱动表举办关联,导致了关联次数的增进,从而使得sql语句执行变得很是的迟钝。

这个时辰必要有履历的DBA举办判定,选择正确的驱动表,这个时辰 straightjoin 就起了浸染了,下面我们来看一看行使straight_join举办优化的案例:

实行回收user表做驱动表,行使straight_join逼迫毗连次序:

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

高效分页

传统分页:

  1. select * from table limit 10000,10 

limit道理:

  • Limit 10000,10
  • 偏移量越大则越慢

保举分页:

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

伟大关联SQL的优化

  • 起首查询返回的功效集,凡是查询返回的功效集很少,是有优化的空间的。
  • 通过查察执行打算,查察优化器选择的驱动表,从执行打算的rows可以大抵回响出题目的地址。
  • 搞清各表的关联相关,查察关联字段是否有吻合的索引。
  • 行使straight_join要害词来逼迫调解驱动表的选择,对优化的设法举办验证。
  • 假如前提应承,对伟大的SQL举办拆分。尽也许越简朴越好。

force index

偶然优化器也许因为统计信息禁绝确等缘故起因,没有选择最优的执行打算,可以工钱改变mysql的执行打算,譬喻:

DBA大牛MySQL优化心得,语句执行加快就是这么简朴!

count的优化

凭证服从排序的话,count(字段)

总结

MySQL 机能优化 最首要是领略 innodb 的索引道理及布局及 SQL 的执行打算,在不绝累积履历的基本上熟能生巧。

【编辑保举】

  1. 体系慢得一批?看数据库运维老司机怎样做优化
  2. MySQL底层架构大揭秘,远不止写SQL那么简朴!
  3. MySQL到底是怎么办理幻读的?
  4. MySQL删除操纵着实是假删除
  5. MySQL数据库字符编码总结--数据传输编码
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读