阅读<SQL语言艺术>实践一
【摘要】
动作丰富的SQL语句
Action-Packed SQL Statements
此节结论:
尽量减少过程逻辑出现在SQL语句,比如if-else之类;能使用一句SQL不要分解为过程逻辑,尽量由数据库系统来提高更高的效率。
为了说明这个问题,我简要测试以下语句:
A、
Update TBUser Set LoginPassword = 222222 Where UserID = 10020774
Begin
If Exists(Select UserID From TBUser with(nolock) Where UserID = 10020774 And Birthday is null)
Begin
Update TBUser Set Birthday = TBUserHeadPic.CTime From TBUserHeadPic Where TBuser.UserID = 10020774 And TBuser.Birthday is null And TBUserHeadPic.UserID = 10020774 And TBUserHeadPic.IsUsed = 1;
End
End
B、
Update TBUser Set Birthday = TBUserHeadPic.CTime,LoginPassword = 222222 From TBUserHeadPic Where TBuser.UserID = 10020776 And TBUserHeadPic.UserID = 10020776 And TBUserHeadPic.IsUsed = 1;
A、B两句在查询分析器中执行,得出以下结论:
满足Birthday=null条件下,A所有语句执行效率占68%,B语句占32%
不满足Birthday=null条件下,A所有语句执行效率占49%,B语句占51%
此例的Sql逻辑尽管有些混乱,但表述一点:从另一张表的数据赋值到另一表的过程。但在效率上下面一句的效率明显优势。
个人观点
无论生活、还是技术,一切都不断的学习和更新~~~努力~