sql语句(一)— —判断是否有这条数据的优化
发布日期:2021-08-12 01:50:56 浏览次数:1 分类:技术文章

本文共 879 字,大约阅读时间需要 2 分钟。

今天发现一个业务上的存储过程写的不够完善,和老板反应后,老板说你来完善吧,我:苦瓜脸~。说实话,我对SQL语句的熟练程度真的是不提也罢【捂脸】,大概的判断流程我知道,但是真的让我自己写,还真得上网查查相关资料。

主要的业务逻辑是这样的,涉及到表A,表B。首先要根据传入的参数从表A里面获取到一个数据memberId,然后根据获取到的memberId到表B里面查询出这一条数据,并更新。

问题:只是说找到这条数据更新,但是并没有做是否有这条数据的判断,所以我在执行存储过程的时候报错了。

解决思路:先根据从表A里面获取到的memberId判断表B里是否存在这条数据,如果不存在,插入;如果存在,则更新。

我是这么写的:如果数据数量特别多,几百万条甚至更多的话,要从头到尾都过一遍,很耗时间。

declare @tCount int;select @tCount=COUNT(*) from dbo.Accounts where MemberId = @tMemberIdif(@tCount=0)    begin        insert into dbo.Accounts values(@tBalance,@tMemberId)    end

 

我们老板提建议优化后的代码:我们的目的只是判断是否存在这条数据,完全可以用exists来判断是否存在,因为它一旦碰到符合条件的数据就不会往下执行了,比较节省时间和资源。

1 if(not exists(select 1 from dbo.Accounts where MemberId = @tMemberId))2     begin3         insert into dbo.Accounts values(@tBalance,@tMemberId)4     end

不管是写后台代码还是sql语句,都要在完成功能的同时考虑到优化,这样的代码才是经得住考验的。

技术点滴,在于积累,继续坚持!

 

转载于:https://www.cnblogs.com/wsn1203/p/7205513.html

转载地址:https://blog.csdn.net/weixin_30642305/article/details/96036794 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:js继承
下一篇:FILE详解

发表评论

最新留言

很好
[***.229.124.182]2024年04月11日 15时49分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章