美文网首页
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