Mysql sql查询优化

1.单个条件未加索引

Mysql sql查询优化

对应的执行计划

Mysql sql查询优化

从查询计划中可以看出该查询全表扫描,扫描行数 9000多行

2.增加唯一索引之后查询

Mysql sql查询优化


查询时间缩短,然后再看查询计划

Mysql sql查询优化

查询计划中,扫描行数中只有一行。

上面建立的索引是唯一索引,常规索引中查询计划的type一般为ref

索引列和非索引列一起查询, 索引仍然会有效

单个索引失效的几种情况

1.%username% like 会失效,%username like 会失效, username% like 不会失效(查询计划中的type=range,in,between 都是这个type);

2.非单独的列 例如  length(username) = 9 会失效;

三 创建组合索引

组合索引失效

1.当一个列上的索引失效时,索引均失效

2.当索引第一列不在条件中时,则索引失效

四 关联查询总结

1.如果表A数据多,表B 数据少,关联字段没有作索引

则 先查询表A,再查询表B,时间较快。即 select from A left join B on

2.如果表A上的关联字段有索引,则应该先查表B,索引起作用

即select from B left join A on