sql慢查询的优化

对于sql慢查询会考虑哪些优化?

  1. 分析sql语句是否添加了不必要的字段或者数据。
  2. 分析sql执行计划,根据分析计划图表思考优化点,是否命中索引,索引使用方式等。
  3. 查看sql的表结构及索引信息设置是否合理。
  4. 优化sql语句结构,避免结构庞大逻辑复杂的sql语句,可以将一些处理放在业务中实现。
  5. 按照优化点修改表结构,合理的设置索引和查询条件。
  6. 如果表数据量太大影响效率,可以考虑进行分表操作。
  7. 利用缓存,合理的将一些查询结果作为缓存,减少查询次数,减轻数据库压力。

如何查询sql的执行计划

在sql语句前面加上Explain,会输出sql语句执行的信息图表。

意义
id该SELECT的标识
select_type该SELECT类型
tableSELECT的表
type查询连接类型
possible_keys可供选择的可能索引
key实际选择的索引
key_len所选索引的长度
rows所筛选的行数
ref与索引比较的列
Extra附加信息
在这图表其中最关键的信息就是type的值,这一列表示SQL的优化程度,依次从最优到最差分别为:system>const>eq_ref>ref>range>index>ALL。一般来说,得保证查询达到range级别,最好达到ref。
type列最常见的值有如下几种
  1. const:使用PRIMARY KEY或 UNIQUE索引,通俗的说就是使用了唯一索引(获取到的是单行数据)
  2. ref:要比const慢一些,使用的不是唯一索引(获取到的可能有多行数据),比如仅仅使用了键的最左前缀键或者普通索引
  3. ref or null:与ref有点类似,不一样的是MySQL会额外去搜索有NULL值的行
  4. index:这个表示只是遍历了二级索引,也就是没有进行回表查询,就是之前文章说过的索引覆盖
  5. all:其实就是全表扫描,是最慢的那一种
  6. range:范围查询
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值