关于sql优化的一些见解

本文分享了提升SQL查询效率的实用技巧,包括合理使用索引、优化字段类型、避免使用星号查询、选择合适的子查询方式、使用unionall替代or、注意模糊查询通配符位置、优化orderby语句及整合数据访问语句等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在项目中,同样的一个执行结果,因为不同的写法执行的效率可能将是几十倍之差,为大家罗列一下我知道关于sql优化的部分知识。

  1. 如果一条sql执行时间过长,那么可以查看这条sql是否涉及到了多表联合查询以及子查询,能否进行业务拆分或者建立临时表。
  2. 适当的建立索引将有助于提高sql查询执行效率,但是索引的增加会影响此表插入和更新效率,只需要在关键字段添加索引即可。
  3. 在设计表的时候,如果某一个字段能确定只是数字类型信息,那么不要设计成varchar,因为引擎在处理查询和连接时,会逐个去比较字符串每一个字符,增加存储开销,降低性能。
  4. 尽量不要使用星号,因为星号是会依次转化所有列名,耗费更多时间,我们只需要获取所需精确信息即可,不需要信息不要查询出来。
  5. in和exists在子查询中,如果主表较大且有索引用in,反之如果子表较大且有索引用exists。
  6. 当sql语句中存在多个or时,建议使用union all来代替,提高速度。or无法优化,但是union all可以走索引。
  7. 模糊查询通配符在使用的时候要注意,%c%这种写法是不会有索引效果的,当通配符出现在其他位置(c%),优化器就能利用索引,提高查询效率。
  8. order by语句的使用将查询结果返回并排序,但是order by语句中的无索引字段或表达式都将降低查询速度。
  9. where子句的连接是基于自上而下的顺序解析的,所以表之间的连接必须写在where条件之前。
  10. 可以适当整合简单无关联的数据访问语句,减少对数据库的访问次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值