mysql之不走索引和sql优化

本文探讨了SQL查询中可能导致不使用索引的情况,包括使用!=、<>、notin、notexists、like后缀、or操作符、计算和函数等。同时提出了优化建议,如用union替换or,选择适合的字段类型,避免null值,精确查询字段,减少大表关联,垂直分表和冗余字段。通过Explain分析和调整SQL语句,能有效提升数据库性能。
摘要由CSDN通过智能技术生成

一. 不走索引的情况

  1. 使用 != 和 <> 不等于符号查询
  2. 使用 not in、 not exists 查询
  3. 使用like后缀查询,如’%string’
  4. 在建立索引和没有索引的字段上使用or,会导致查询不走索引
  5. 使用>、 <、 <=、 >= 符号,可能不走索引,这个要看优化器的判断
  6. 字符串类型字段使用数字进行比较,不走索引,如 (varchar(200) name) name=123
  7. 在索引字段上计算
  8. 在索引字段行使用函数操作

二. 优化

  1. or语句使用union替代
  2. 字段尽量使用短类型,如年龄int使用 tinyint替代
  3. 通过Explain分析低效的sql语句
  4. where、orderby和join字段建立索引
  5. 字段尽量避免使用 null值,设置默认值,如字符串’’, 数字0
  6. 查询字段避免使用*,只查询需要数据
  7. 大表尽量避免多表关联
  8. 经常使用大数据字段垂直分表,如text存储文章
  9. 字段适量冗余
  10. 大表可以进行分表, 垂直分表和水平分表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值