【索引创建原则+索引失效情况+常见的sql优化策略】

索引的创建原则

什么情况下适合创建索引:

  1. where子句频繁使用的列上
  2. 经常用来排序的列
  3. 分组经常使用的列(group by xx)
  4. 查询经常使用的列,可以建立索引提供查询效率
  5. 小表上不要建立索引(表中的数据太少)
  6. 多表连接时,在连接条件列上建立索引
  7. 表的主键、外键最好建立索引
  8. 索引字段类型选择尽可能小,字段类型大的不要建立索引,如oracle中的blob
  9. 修改频繁的字段,不要建立索引等等

索引失效情况

什么情况下索引会失效:

  1. sql中使用in或者not in,会导致全表扫描,索引失效
  2. like中使用通配符开头,也会导致索引失效,如:like ‘%w’,像like ‘w%’是会使用索引的
  3. where子句中进行空值判断(is null)、字段的表达式计算、不等的判断:!=或者(<>)、使用or作为连接条件且左右字段不全是索引字段时都会使索引失效
  4. sql的全表扫描查询比索引快时,索引失效(一般不会出现)
  5. sql的字段隐式转换时会导致索引字段失效,如,varchar age,使用时赋值age=18等等

常见的sql优化策略

  • 上述索引失效的情况的反面都可以看成优化sql的情况
  • 使用选择列(具体的列名)代替*,使用*会导致全表扫描
  • 使用exists代替in
  • 子查询select尽可能少,尽可能sql压缩成一条select查询
  • 使用表的别名
  • 字段定长改为可变长度,如char改成varchar,提高数据库执行效率等等
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值