mysql 优化 sql查询优化

1.永远是小表驱动大表
优化原则:
在这里插入图片描述
2.优化order by 语句

  1. order by子句,尽量使用Index方式排序,避免使用FileSort方式排序。尽可能在索引列上完成排序操作,遵照索引建的最佳左排序

  2. 优化策略:
    *增大sort_buffer_size参数设置
    *增大max_length_for_sort_data参数设置

    order by 关键字优化:
    1.Order by 时select*是一个大忌只Query需要的字段,这点非常重要,在这里的影响是:
    (1)当Query的字段大小总和小于max_length_for_sort_data,而且排序字段不是TEXT|BLOB类型,会用改进后的算法-----单路排序,否则用老算法----多路排序
    (2) 两种算法的数据都有可能超出sort_buffer的容量,超出之后,会创建tmp文件进行合并排序,导致多次I/O,但是用单路排序的风险会很大一些,所以要提高sort_buffer_size。
    2.尝试提高sort_buffer_size
    **不管用哪种算法,提高这个蚕食都会提高效率,当然要根据系统的能力去提高
    3.尝试提高max_length_for_sort_data
    提高这个参数,会增加用改进算法的概率,但是如果设的太高,数据总容量超过sort_buffer_size的概率就增大,明显症状是高的磁盘I/O活动和低的处理器使用率。
    在这里插入图片描述

3.group by 关键字优化与order by 类似:
不同点:

  • group by实质先排序后进行分组,遵照索引建的最佳左前缀

  • 当无法使用索引列,提高sort_buffer_size+提高max_length_for_sort_data

  • where高于having,能写在where的条件不要写到having

     									***帅气的远远啊***
    
发布了39 篇原创文章 · 获赞 27 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41585840/article/details/104086610