zoukankan      html  css  js  c++  java
  • 阅读<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逻辑尽管有些混乱,但表述一点:从另一张表的数据赋值到另一表的过程。但在效率上下面一句的效率明显优势。

    个人观点

  • 相关阅读:
    Light oj 1197
    UVA 11426 GCD
    Light oj 1236
    Light oj 1138
    Light oj 1214-Large Division (同余定理)
    Light oj 1234
    HDU
    ZOJ 3469 Food Delivery(* 区间DP 总结)
    二分查找整理
    zoj 3965 Binary Tree Restoring(* dfs)
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/1891827.html
Copyright © 2011-2022 走看看