简单易懂的数据库优化方案

一、表结构层次的优化

  1. 适当地使用冗余数据,以减少关联查询。
    比如说订单表,每次查询订单的时候都要去查询下单用户的username,每次都要关联user表,重复工作很多。
    对策:可以把username冗余到订单表里,以减少关联查询用户名称。
  2. 大数据字段拆成小表,常用字段分离出小表。
    比如说景区表,有个字段叫 scenic_details (景区详情),存储了富文本结构的信息,字符长度可达几千甚至上万。查询列表的时候,如果连这个字段一起查出来,效率将会非常地慢。
    对策:查询列表的时候不要查这个字段,需要用到的时候再去查。

二、索引的优化

  1. 给经常要查询的字段添加索引,最好是重复不多的字段
    比如说经常需要通过用户名称查询用户信息,此时可以给用户名称添加索引。
    关联其他表的外键也可以添加索引。
  2. 使用EXPLAIN查看mysql的执行计划

三、sql语句的优化

  1. 避免使用过于复杂的join和子查询,写join语句时用小结果集驱动大结果集。
  2. 禁止使用 select * ,需要什么就查什么,减少不必要的查询。
  3. 调整 where 子句的顺序,把能过滤掉更多数据的条件放前面。
  4. 不要在索引上计算,会使索引不可用。
  5. 尽量把多条sql压缩到一句sql中。
  6. 使用表的别名,可以减少解析时间。
  7. 使用 union all 代替 union ,or
  8. 使用 varchar 代替 char
  9. where子句禁止使用 is null,is not null,如果非要判断,建议设置null为0
  10. 能用 between 就不要用 in
  11. like 模糊查询,不要使用前置 % ,比如 '%abc%' 会引发全文检索。

四、数据库整体层次的优化

  1. 使用数据库主从配置,读写分离
  2. 分库、分表
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。