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后查询