我的Java开发生涯记(22)——mysql的查询优化

2019.9.2著

半个月没写了吧 , 最近确实没什么灵感 , 有时候太忙 , 有时候太懒 , 有时候有动力但是又不知道该写点什么。

就来点查询优化吧

查询方式的优化:

  1. mysql嵌套子查询效率确实比较低

  2. 可以将其优化成连接查询

  3. 连接表时,可以先用where条件对表进行过滤,然后做表连接(虽然mysql会对连表语句做优化)

  4. 建立合适的索引,必要时建立多列联合索引

  5. 学会分析sql执行计划,mysql会对sql进行优化,所以分析执行计划很重要

-- 单列索引
CREATE index 索引名称 on 表名(建立索引的字段);
-- 多列索引
create index 索引名称 on 表名(字段1,字段2,字段3);

 

sql的调优:

  1. 列类型尽量定义成数值类型,且长度尽可能短,如主键和外键,类型字段等等

  2. 建立单列索引

  3. 根据需要建立多列联合索引

     

    • 当单个列过滤之后还有很多数据,那么索引的效率将会比较低,即列的区分度较低

    • 如果在多个列上建立索引,那么多个列的区分度就大多了,将会有显著的效率提高。

       

  4. 根据业务场景建立覆盖索引只查询业务需要的字段,如果这些字段被索引覆盖,将极大的提高查询效率

  5. 多表连接的字段上需要建立索引,这样可以极大提高表连接的效率

  6. where条件字段上需要建立索引

  7. 排序字段上需要建立索引

  8. 分组字段上需要建立索引

  9. Where条件上不要使用运算函数,以免索引失效

 

总结:合理的连表+正确的使用索引=高效的sql

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值