记录一次实际过程中的MySql数据库SQL优化

前言

之前开发项目的过程当中数据库存储的数据量都不是很大,在表的设计当中就只有一个主键索引。很少接触到数据库的索引,SQL 优化这些东西。公司目前的项目数据达到了百万级别了,让我优化一下慢 SQL,之前是懂一些 SQL 优化和索引相关的理论知识,没有实际操作过,特此记录优化的过程和思路,事实证明,理论和实操还是有不少区别的。

理论知识

实际过程

理论是基础,在实际的过程当中需要灵活的运用。特此记录自己在进行优化时的一些操作和心得。

  1. 查看执行语句选择的索引,一次查询只会选择一个索引,是mysql自动进行的选择。 但是mysql并不会总是选择我们希望的索引。所以要结合索引的相关知识让mysql选择到我们希望的索引。
  2. 在1的基础上,需要注意,当我们新建一条索引之后,可能会导致之前某些SQL在索引的选择上发生变化。
  3. 结合业务场景进行SQL方面的优化,当需要连表进行count操作的时候,如果两张表的数据都很大的话,可以先考虑group by 在用sum统计!等等之类的操作(需要查看大量理论相关的知识)
  4. 索引不是越多越好,合理的索引会加快查询效率,不合理的索引也可能会加快效率,但是会提高维护成本!
  5. 光有索引也不行,还得结合SQL进行优化,思考为什么慢,慢的原因可以避免么?慢的sql可以变换么?。
  6. 考虑SQL当中的某个操作是否可以避免,或者替换,比如:存在联合唯一索引:dept_id和user_id,那么当dept_id为查询条件的时候,对user_id的去重操作就可以取消掉。
  7. 如果SQL上优化不了,那就从业务上优化。
  8. 最后一定要有耐心,优化的过程是很枯燥的!!!!!

注意点

  • 保证测试环境和正式环境的数据,SQL,机器配置一致。
  • 有时可能是正式环境进行了限流操作,结果本地跑的飞起,正式卡的飞起。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章