SQL语句优化小节

最进项目原因,看了一些sql优化的建议特此总结一下。

  1. 索引列中避免null
    在sql语句中任何包含null的值的列都不会被包含在索引中,也就是所我们在设计表的时候最好将带有索引的列设置默认值,这样避免出现null导致索引失效。
  2. in ,or ,between
    可以使用in时候别使用or,可以使用between时别使用in
  3. !=,not
    select * from user where salary<3000 or > salary > 3000.

    select * from user where salay!=3000
    使用前者,第一种允许使用索引,第二种不允许
  4. 避免在索引上计算
    低效: SELECT … FROM USER WHERE SAL * 12 > 25000;
    高效: SELECT … FROM USER WHERE SAL > 25000/12;
  5. 用>= 替换 >
    高效: SELECT * FROM EMP WHERE APPLE >=5
    低效: SELECT * FROM EMP WHERE APPLE >4
    区别在于第一个会直接跳到等于5的那条记录,而第二条会首先定位到4然后再扫描
  6. 尽量避免使用select *
    这个是个老生常谈的问题,还是为了节省资源和网络开销,每次查询时最好只查询需要的字段即可
  7. 如果确定只会返回一个结果使用limit 1
    好处在于一是可以避免业务出错,其二还能提高查询效率,查到后直接返回结果
  8. 数字比字符型查询更快
    在同等情况下,如果能够确定字段内存储均为数字,最好是将其设为数字类型,提高查询效率。
  9. like模糊查询不可前置百分比
    我们在使用like进行模糊查询时,不可将百分号放在最前面,会导致无法使用索引,而进行全文搜索。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值