蚂蚁金服架构师带你学优化一 MySql 性能优化实战
概要:
Mysql 的优化,大体可以分为三部分:索引的优化,sql 语句的优化,表的优化。本文主要帮助自己整理思路,也可作为一个学习 MySQL 优化的提纲。
索引的优化
只要列中含有 NULL 值,就最好不要在此例设置索引,复合索引如果有 NULL 值,此列在使用时也不会使用索引
尽量使用短索引,如果可以,应该制定一个前缀长度
对于经常在 where 子句使用的列,最好设置索引,这样会加快查找速度
对于有多个列 where 或者 order by 子句的,应该建立复合索引
对于 like 语句,以 % 或者‘-’开头的不会使用索引,以 % 结尾会使用索引
尽量不要在列上进行运算(函数操作和表达式操作)
尽量不要使用 not in 和 <> 操作
sql 语句的优化
查询时,能不要就不用,尽量写全字段名
大部分情况连接效率远大于子查询
多使用 explain 和 profile 分析查询语句
查看慢查询日志,找出执行时间长的 sql 语句优化
多表连接时,尽量小表驱动大表,即小表 join 大表
在千万级分页时使用 limit
对于经常使用的查询,可以开启缓存
表的优化
表的字段尽可能用 NOT NULL
字段长度固定的表查询会更快
把数据库的大表按时间或一些标志分成小表
将表分区
蚂蚁金服架构师带你学优化 - MySql 性能优化实战(附详细视频教程)
1. 步步惊心,MySql 优化满地是坑;
2. 丛林密布,优化有图可循;
3. 悔恨难当,只因用错索引;
4. 披荆斩棘,执行计划让你脱离深坑;
5. 豁然开朗,SQL 优化有方可循
一个 SQL 引发的思考
常用的优化方式
反范式化设计
三大范式
物理设计
索引是什么?
最简单的索引
稍微复杂点的索引
MySql 中的索引
索引分类
总结
优化通常都需要三管齐下:不做、少做、快速地做。我们希望这里的案例能够帮助你将理论和实践联系起来。
The End
发布于:2023-06-12,除非注明,否则均为
原创文章,转载请注明出处。
还没有评论,来说两句吧...