mysql gis缓冲区查询_线上定位Mysql慢查询的直接方法--explain

本文探讨了为何需要快速定位慢查询,指出当用户请求响应超过0.5秒时,体验会受到影响。在数据库查询中,通过使用索引来提升查询速度至关重要。解释了`EXPLAIN`命令在分析SQL执行计划中的作用,例如ALL表示全表扫描,range表示索引范围扫描,const则表示通过主键快速查询。通过举例说明不同查询类型的影响,强调了索引对于提高查询效率的重要性。
摘要由CSDN通过智能技术生成

这段是废话 : 为什么要定位慢查询?用户请求,如果超过0.5s 没有反馈,就会丧失耐心。刨除 网络IO,页面渲染 时间,留给数据库查询的时间,着实没有多少了,0.3S ? 但实际上,一个业务请求,包含多次数据库查询,数据库自己也有网络IO的请求。

所以一个sql 查询,要尽可能的缩短查询时间。

如何增加查询速度?最有效的方法:索引

如何确定索引是否有效?  explain 命令

现有一张 84W 条数据的表

直接模糊查询 某content_text字段中,包含   大盘   俩字的条数,耗时2s +

d5248c65d02c44d38aeeb15191359bfb.png

重点在这儿:

在sql 语句前,加上 explain ,再执行,可以得到sql 执行的分析结果。

这里type :ALL ,rows 99W。   为什么比真实条数还大?因为explain 的rows 计数,是估算值,不是准确值。

但也可以分析得出:  这是一个全表查询,我们大概要从99W条数据中,找到7W条数据。 这计算量太大啦。

再看一条数据查询:

rows 为1,type 为const。 直接通过主键,查询指定行内容,这速度自然更快,0.126 s

这里,type 共有 7 种:

type = ALL :全表扫描

type = index : 索引扫描,mysql 遍历整个索引来查询匹配的行

type= range: 索引范围扫描,常见于 < , <= ,> , >=, betweent等操作符。

type = ref : 使用非唯一索引或唯一索引的前缀扫描,返回匹配某个单独值的记录行

type = eq_ref : 类似ref, 区别在于使用的所以是唯一索引。

type = const/system, 单表中最多有一个匹配行,查询起来非常迅速,如主键或唯一索引等

type = NULL :type 不用访问表或者索引,就能直接得到结果.

从mysql 4.1版本开始, 引入  explain extended 命令,可以查看到SQL在执行前,被优化器做了哪些改写。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值