常见sql优化

  1. 对于执行时间较长的SQL,可用explain来获取执行计划,type最好到range或者ref级别,可查看key是否走了索引;
  2. 删除时尽量使用逻辑删除,避免删除太多影响页目录索引
  3. 尽量inno join ,因为他是取得并集,而left或者right会连接其他表不存在的数据,查询的结果集较多;
  4. 尽量使用union all,因为union会有重复的而且需要排序,union all则不需要;
  5. 删除或者修改多条数据时,尽量批量操作,大范围操作可能会遇到锁;
  6. join的表不必要太多,不超过五个;
  7. 使用union代替or
  8. 读写分离和分库分表
  9. 主键尽量使用int或者bigint递增,方便维护页目录索引,方便查询
  10. varchar尽量代替char,char可能会有空字符;
  11. 先where后groupby,代替先groupby后having;
  12. 针对于innodb的回表查询,例如:select age from student where name=‘张三’,会先通过name索引到非聚集索引查询到张三的主键,然后根据主键回表到聚集索引查询age信息,可以将age,name和主键三个字段设为覆盖索引,这样可避免第二次回表查询;

 

posted @ 2020-07-06 18:14  DaDa~  阅读(1325)  评论(0编辑  收藏  举报