美文网首页
MYSQL性能优化

MYSQL性能优化

作者: 砌月东谷 | 来源:发表于2021-07-01 07:04 被阅读0次

1、单表优化

  • 如果(a,b,c,d)复合索引,并且和使用的顺序全部一致,而且不夸列使用,则复合索引全部会被使用,如果部分一致,而且不夸列使用,则部分索引会被使用
  • where和order by的索引 连续起来使用,不要跨列使用
  • 避免出现using temporary 的方法就是group by的排序字段要保证被包含在where语句中,这是因为sql在执行时,是先执行where后执行group by ,假设在执行where时没有使用x字段,而x字段却在group by中出现了,那么久需要在执行group by 时重新再创建一张临时表用来处理x字段
  • 对于两张表关联查询的情况,一般建议是给两张表的关联字段都加上索引,特殊情况下,如果要求左连接只能给一张表加索引,那么建议优先在右表的关联字段上加上索引

2、双表优化

  • 对于两张表关联查询的情况,一般建议是给两张表的关联字段都加上索引,特殊情况下,如果要求左连接只能给一张表加索引,那么建议优先在右表的关联字段上加上索引
  • 小表驱动大表,where或者on的时候先写数据量小的表放左边

3、避免索引失效的原则

  • 不要再索引字段上进行任何操作(计算,使用函数,显示/隐式类型转换),复合索引一个失效全部失效,单值索引,某个单值索引的失效不会影响到其他单值索引
  • 不能对复合索引使用大于、不等于或is null ,is not null
  • like查询不要以%开头
  • where后面不要使用or

4、优化数据库性能的几点补充

1、exist和in

当主查询的数据集大时,使用in

当子查询的数据集大时,使用exist

2、order by

全部排序字段在排序时,保持顺序一致性,如对多个字段排序,尽量都是升序或都是降序

相关文章

网友评论

      本文标题:MYSQL性能优化

      本文链接:https://www.haomeiwen.com/subject/byzdultx.html