exist优化 in mysql_19个SQL优化技巧,能帮运维提高3倍效率!

本文介绍了MySQL SQL优化的19个关键技巧,包括善用EXPLAIN分析执行计划,避免IN操作过多,明确SELECT字段,合理使用LIMIT,优化OR和UNION,以及避免NULL值判断等,旨在帮助运维人员提高查询效率至少3倍。
摘要由CSDN通过智能技术生成

4cf81039413abe79997caadd2bc23b39.gif

在介绍具体的 SQL 调优的方法前,我们先来简单了解下 MySQL 调优金字塔理论。

74f6327cb4703e634d855c60ae5937fa.png

如上图所示,数据库优化维度有四个:硬件、系统配置、数据库表结构、SQL 及索引。

优化成本:

硬件>系统配置>数据库表结构>SQL及索引

优化效果:

硬件

我们可以看出数据库 SQL 语句效率调优是最省成本效果最好的办法,也就是结构设计上的优化。本文我们就来谈谈 MySQL 中常用的 SQL 优化方法,利用好这些方法会让你的 MySQL 效率提高提升至少 3 倍。

1、EXPLAIN

做 MySQL 优化,我们要善用 EXPLAIN 查看 SQL 执行计划。

下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:

273c179ba2ed5487c5b94029a09c354a.png

•Type 列,连接类型。一个好的 SQL 语句至少要达到 Range 级别。杜绝出现 All 级别。•Key 列,使用到的索引名。如果没有选择索引,值是 NULL。可以采取强制索引方式。•Key_Len 列,索引长度。•Rows 列,扫描行数。该值是个预估值。•Extra 列,详细说明。注意,常见的不太友好的值,如下:Using filesort,Using temporary。

2、SQL 语句中 IN 包含的值不应过多

MySQL 对于 IN 做了相应的优化,即将 IN 中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。

再例如:Select Id From T where Num IN (1,2,3) 对于连续的数值,能用 Between 就不要用 IN 了;再或者使用连接来替换。

3、Select 语句务必指明字段名称

Select * 会增加很多不必要的消耗(如:CPU、IO、内存、网络带宽等), 增加了使用覆盖索引的可能性。

当表结构发生改变时,前断也需要更新。所以要求直接在 Select 后面接上字段名。

4、当只需要一条数据的时候,使用 Limit 1

这是为了使 EXPLAIN 中 Type 列达到 Cons

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值