limit相关数据库优化

limit1数据库优化

场景使用

工作中对于某些特殊场景使用limit 1可以大大加快sql语句的效率。
如判断用户名是否已经使用:

select count(user_nme) from table where user_name = 'XXX' limit 1;

这种场景下只要有一条数据便可以判断出用户名已重复,从而不需要浪费资源继续向下检索
又或者是当我们认为某个字段是唯一的,但是该字段并没有添加索引,
如身份证号

select * from table where num_id = 'XXX' limit 1;

这种场景查到一条也可以获得数据,因为字段唯一,所以也不需要向下继续查询

注意

当字段已经添加索引,或者字段为主键时,limit 1加与不加效率并不会产生变化
如id为主键:

select * from table where id ='1';
select * from table where id ='1' limit 1;

这种情况下是不需要添加limit 1的

扩展

再业务场景要求高的数据库,对于单条的delete和update,在后面加上limit 1也会提高效率
道理同上!同时还能预防delete或者update的sql编写失误导致的大面积数据变更。
不加limit容易误删输出;
表的本身字段多,数量大,同时又要删除较多数据时,直接一次性删除会形成长事务,占用锁的事件也比较长,有可能影响其他业务;

delete * from tble --where  trsDate='1'  --limit 10000

当出现以上这种情况其实可以考虑循环删除,将长事务转化为多个较短的事务,串行执行,使客户端的等待时间缩短。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值