Mysql 查询优化的思路

概述

SQL查询慢的两个原因:搜索慢 、查询的结果太大(IO开销大)

  1. 查的结果太大:
  • 数据太多,可以用分页分批查询,不仅可以降低IO的开销,也可以降低java存储的内存开销
  • 字段太多,特别是一些大的字段,只查询自己需要的字段,降低IO开销
  • SELECT 不要跟 * 号,可以避免 * 的转义。
  1. 搜索慢的解决思路:
  • 是否正确的使用好的索引(一张表的一次查询只能使用一个索引)
  • SQL是否可以优化,比如大表的limit查询、In查询不如用范围查询来的好,between and。 select *
  • 根据业务场景 分区、分表、分库、读写分离
  • 查询结果缓存:Mysql自带的缓存功能,或者依赖第三方做缓存(Ehcache、Redis等)(在业务低峰期做定时任务加载最新的数据到缓存中)
  • 业务上是否可以妥协,不要对过多的字段做分组、排序
  • 存储引擎的选择,多读少写的场景下可以考虑用Myisam,一级索引快。如果都是精确查询的话,可以考虑用Memory引擎。
  1. 其它辅助
  • explain 查看执行计划
  • 开启Mysql的慢查询日志功能,查看哪些SQL慢了
  • 或者使用Druid、cat的监控功能

你可能感兴趣的:(Mysql 查询优化的思路)