p137 explain之select_type &type& key
type 效果递减
system
const
eq_ref
ref
ref_or_null
index_merge
unique_subquery
range
index
这里要查询的字段和条件都在联合索引中,不是第一列,但是没有索引失效
小结:
key
keylenth
联合索引下 越长越好
p138 explain中ref rows filtered extra剖析
rows
filtered
p141 数据准备 与索引失效的11种情况
全值匹配
联合索引比单列索引更快
最左匹配原则
主键插入顺序
主键最好自增,否则会产生页分裂,影响性能
计算、函数、类型转换(自动或手动)导致索引失效
字段使用函数会导致索引失效
类型转转导致索引失效
p142 索引失效的11种情况
范围条件右边的列索引失效
创建时索引字段顺序改变一下可以解决
不等于(!= 或者<>)索引失效
is null可以使用索引,is not null无法使用索引
like以通配符%开头索引失效
OR 前后存在非索引的列,索引失效
1 数据库和表的字符集统一使用utf8mb4
统一使用utf8mb4( 5.5.3版本以上支持)兼容性更好,统一字符集可以避免由于字符集转换产生的乱码。不
同的 字符集 进行比较前需要进行 转换 会造成索引失效
小结:
p143 外连接与内连接查询优化
p144 join语句底层原理
上面这个左外查询会被优化器优化为内连接查询
当优化为内连接查询之后,优化器决定先查询哪张表,哪张表就是驱动表
p145 子查询优化和排序优化
因为需要回表,索引没有生效,优化器觉得数据量过大,成本较大
如果只查询索引字段,不用回表,这时候索引就会生效
加上limit只取10条,这时候索引又生效了,因为10条数据回表成本较低
P146 group by优化 分页查询优化
p148 索引条件下推 icp
情况1
情况2
p149其他查询优化策略
p151 152三大范式
p153反范式
p161事务的ACID特性与事务的状态