sql优化方法(避免引起全表查询的方法有哪些)

1.尽量避免在 where 子句中使用!=或<>操作符

2.优先考虑在 where 及 order by 涉及的列上建立索引

3.尽量避免在 where 子句中对字段进行 null 值判断

   select id from t where num is null
   可以在num上设置默认值0,确保表中num列没有null值,然后这样查询:

    select id from t where num=0

4.应尽量避免在 where 子句中使用 or ,如:

     select id from t where num=10 or num=20
     效率高的方法使用union all/union:
     select id from t where num=10
     union all

     select id from t where num=20

 5.不能前置百分号
     select id from t where name like ‘%abc%’

    若要提高效率,可以考虑全文检索。

6.in 和 not in 也要慎用,否则会导致全表扫描,如:
     select id from t where num in(1,2,3);
     对于连续的数值,用 between 而不要用 in :

     select id from t where num between 1 and 3;

7.应尽量避免在 where 子句中对字段进行表达式操作。如:
     select id from tab where num/2=10
     应改为:

     select id from tab where num=10*2

 8.很多时候用 exists 代替 in 是一个好的选择:
     select num from a where num in(select num from b)--提前预知a的数据量大于b时,此效率高
     用下面的语句替换:

     select num from a where exists(select 1 from b where num=a.num)--提前预知b的数据量大于a时,此效率高

 9.在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,

    否则该索引将不会被使 用,并且应尽可能的让字段顺序与索引顺序相一致;

例如 a(前置索引),b,c三个索引,ab/ac/abc索引起作用,bc时索引失效。

10.索引并不是越多越好:对于需要经常查询的列可以建立索引,对于经常需要修改的列则避免建立索引;对于数据量小的表不可以建立索引。

11.避免使用游标,游标效率本身差,若游标操作的数据超过一万行,则应该考虑改写。


  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值