mysql

1.每天需要pull更新一下工程
2.Mysql执行计划
引言:

在实际开发项目中,实际我们并不知道数据库实际发生了,是怎样扫描表的,怎么使用索引的,我们只能感知到sql语句运行了多长时间.在数据规模不大时,查询基本上是瞬间的,数据规模庞大增加的时候,如千万.亿的时候,我们在运行同样的sql语句的时候,却迟迟不出结果.这个时候才知道数据规模已经限制了我们查询的速度。所以,查询优化和索引也就显得很重要了。

索引:

如果没有索引,那么将从表中第一条记录一条条往下遍历,直到找到该条信息为止,则需要进行全表扫描,效率很低,加上索引,mysql可以通过索引准确的定位到需要查找的数据,加大了sql 的执行效率.

如何使用执行计划?

要使用EXPLAIN,只需要在查询的SELECT关键字之前增加EXPLAIN这个词。
在这里插入图片描述
EXPLAIN列的解释:
执行计划重点关注 type、key、key_len、rows、extra
type:
ALL:表示全盘扫描,也是效率最低的
index ,全索引扫描,同ALL的区别是,遍历的是索引树
range:索引范围扫描,常用于between,< ,>这样的查询条件
index_merge:where 中可能有多个条件(或者join)涉及到多个字段,它们之间进行 AND 或者 OR,那么此时就有可能会使用到 index merge 技术。index merge 技术如果简单的说,其实就是:对多个索引分别进行条件扫描,然后将它们各自的结果进行合并(intersect/union)。
ref_or_null: 与ref用法一样,但是包括null值列
ref: 查找条件列使用了索引而且不为主键和unique。其实,意思就是虽然使用了索引,但该索引列的值并不唯一,有重复。这样即使使用索引快速查找到了第一条数据,仍然不能停止,要进行目标值附近的小范围扫描。但它的好处是它并不需要扫全表,因为索引是有序的,即便有重复值,也是在一个非常小的范围内扫描。
eq_ref:与 ref相比牛的地方是,它知道这种类型的查找结果集只有一个?什么情况下结果集只有一个呢!那便是使用了主键或者唯一性索引进行查找的情况,这种连接类型每次都进行着精确查询,无需过多的扫描,因此查找效率更高,当然列的唯一性是需要根据实际情况决定的。
const:主键或唯一索引的查询,这是效率最高的连接方式,一般用于主键放在where后查询

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值