文章目录
- 1. 数据准备
- 2. 索引失效案例
- 2.1 全值匹配我最爱
- 2.2 最佳左前缀法则
- 2.3 主键插入顺序
- 2.4 计算、函数、类型转换(自动或手动)导致索引失效
- 2.5 类型转换导致索引失效
- 2.6 范围条件右边的列索引失效
- 2.7 不等于(!=或者<>)索引失效
- 2.8 is null 可以使用索引,is not null 无法使用索引
- 2.9 like 以通配符%开头索引失效
- 2.10 OR 前后存在非索引的列,索引失效
- 2.11 数据库和表的字符集统一使用utf8mb4
- 2.12 练习及一般性建议
- 3. 关联查询优化
- 3.1 数据准备
- 3.2 采用左外连接
- 3.3 采用内连接
- 3.4 join语句原理
- 3.4.1 驱动表和被驱动表
- 3.4.2 Simple Nested-Loop Join(简单嵌套循环连接)
- 3.4.3 Index Nested-Loop Join(索引嵌套循环连接)
- 3.4.4 Block Nested-Loop Join(块嵌套循环链接)
- 3.4.5 小结
- 3.4.6 Hash Join
- 3.5 小结
- 4. 子查询优化
- 5. 排序优化
- 5.1 排序优化
- 5.2 测试
- 5.3 案例实战
- 5.4 filesort算法:双路排序和单路排序
- 6. GROUP BY 优化
- 7. 优化分页查询
- 8. 优先考虑覆盖索引
-
- 9. 如何给字符串添加索引
-
- 10. 索引下推
- 10.1 使用前后对比
- 10.2 ICP的开启/关闭
- 10.3 ICP 使用案例
- 10.4 ICP的使用条件
- 11. 普通索引 vs 唯一索引
- 11.1 查询过程
- 11.2 更新过程
- 11.3 change buffer的使用场景
- 12. 其它查询优化策略
- 12.1 EXISTS 和 IN 的区别
- 12.2 COUNT(*) 与 COUNT(具体字段) 效率
- 12.3 SELECT(*)
- 12.4 LIMIT 1 对优化的影响
- 12.4 多使用COMMIT
- 13. 淘宝数据库,主键如何设计的?
- 13.1 自增的ID的问题
- 13.2 业务字段做主键
- 13.3 淘宝的主键设计
- 13.4 推荐的主键设计
1. 数据准备