SQL Server学习记录之语句优化
来源:互联网 发布:java poi jar 编辑:程序博客网 时间:2024/05/01 00:26
1、我之前写的没有优化的SQL语句:
declare @getmoney intset @getmoney=0select @getmoney=addscore from SignInRule where QMinDay=@countday //添加签到日志 set xact_abort on begin tran //修改个人金币 declare @tempmoney bigintselect @tempmoney=WalletMoney from TUserInfo where UserID=@UserIDupdate TUserInfo set WalletMoney=@tempmoney+@getmoney where UserID=@UserID //修改个人元宝 commit tran优化后的SQL语句:
declare @getmoney intselect @getmoney=isnull(addscore,0) from SignInRule where QMinDay=@countday //添加签到日志 set xact_abort on begin tran //修改个人金币 update TUserInfo set WalletMoney=WalletMoney+@getmoney where UserID=@UserID //修改个人元宝 commit tran
这里我用了isnull函数,这个函数对查找到字段值和没有查找到字段值都给赋了值,这样我们就少了变量的初始化工作;而且对语句的累加操作也做了优化处理
2、判断是否存在记录的exists语句注意
我想用exists判断记录是否存在的同时取得这条记录字段的值。所以做了如下书写
declare @tempmoney intif exists(select @tempmoney=Money from TUsers where UserID=10007)
但是后来发现这条语句会出现判断错误,有记录的时候也会判断为假,后面改成如下判断就没问题
if exists(select * from TUsers where UserID=10007)
总结:exists只能判断记录是否存在不能同时做赋值处理
3、关于声明语句和赋值语句的书写
声明多个变量:
declare @money int,@age int,@name varchar(10)//这里声明不同类型的变量是对的
赋值语句:
set @money=123456,@age=543//这是不对的,不能同时对多个变量赋值
应该改成:
set @money=123456set @age=543
4、内连接查询
--更新奖励到个人钱包 update A set A.WalletMoney=WalletMoney+T.GiveNum from TUserInfo A, (select B.UserID,C.GiveNum from TContestRecord_New B inner join Web_MatchAwardConfig C on C.TypeID=@SendTypeID and B.MatchID=@MatchID and B.RankNum=C.Rank) as T where A.UserID=T.UserID
0 0
- SQL Server学习记录之语句优化
- sql语句优化之SQL Server
- sql server之数据库语句优化
- sql server之数据库语句优化
- sql语句优化SQL Server
- SQL Server数据库性能优化之SQL语句篇
- SQL Server数据库性能优化之SQL语句篇
- SQL Server数据库性能优化之SQL语句篇
- SQL Server数据库性能优化之SQL语句篇
- 转:SQL Server数据库性能优化之SQL语句篇
- SQL Server数据库性能优化之SQL语句篇
- SQL Server数据库性能优化之SQL语句篇
- sql语句优化之SQL Server(详细整理)
- [学习笔记]MySql之SQL语句优化
- MySQL 之 SQL 语句优化学习
- SQL Server学习记录之存储过程
- SQL Server学习记录之日期操作
- SQL Server学习记录之函数
- mysql的事务
- 解决web项目中文乱码
- 解决在onCreate()过程中获取View的width和Height为0的4种方法
- 第八周项目4 字符串加密
- java获取文件编码实现
- SQL Server学习记录之语句优化
- 华为校园招聘技术类笔试面试经验(摘)
- 《算法导论》实验七:区间树上的重叠区间查找算法(C++)——控制台树型显示
- cmd运行现有的sql文件(MySQL)出现SOURCE error 2
- struts向网页输出图片验证码
- 【Android】DownloadManager 打开url下载的APK文件无法打开的问题 cannot open file
- MFC界面刷新函数
- 【OJ2726】集合问题,堆
- 泊松分布噪声图像