• sql优化


    1.循环中插入数据和删除数据尽量不要放在循环中or同时放在循环中or同一个循环中;

       注意sql中引号的用法(sql中引号的特殊用法在另一篇博文中有详细介绍)。

    例子:

    改动之后执行时间3分钟多点:

    truncate table STORE---------------------------------------删除放在while循环的外边执行速度提高。

    set @a=1
    set @b=28

    while @a<=@b
    begin
    set @week=201316---------------------------周别
    set @ACCT_DT=20130516--------------------日期

    set  @STRSQL=''
    SET @STRSQL=@STRSQL+'
    INSERT INTO  STORE
    SELECT
             DT

            ,SCD

            ,ITCD

            ,CNT
    FROM  SALES_D_STORE
    WHERE dt='''+convert(varchar(10),@ACCT_DT,111)+''' ------------------------------------字符串类型用引号,速度提高。
    '
    -- EXEC (@STRSQL)
    print (@STRSQL)
    set @a=@a+1
    end

    改动之前执行时间24分钟:

    set @a=1
    set @b=28

    while @a<=@b
    begin
    set @week=201316
    set @ACCT_DT=20130516

    SET @STRSQL=''
    SET @STRSQL=@STRSQL+'
    delete from STORE where convert(varchar(10),dt,112)='+convert(varchar(10),@ACCT_DT,112)+'-----------------------delete在循环中
    INSERT INTO STORE

    SELECT
              DT

             ,SCD

             ,ITCD

             ,CNT
    FROM   SALES_D_STORE
    WHERE convert(varchar(10),dt,112)='+convert(varchar(10),@ACCT_DT,112)+'-----------------------------------------没引号varchar类型
    '---------------------------------------------------------------------------------------------------------------黄色标注部分尽量不要产生运算
    --EXEC (@STRSQL)
    print (@STRSQL)
    set @a=@a+1
    end

    ---------------------------改动前后相差二十分钟左右,cpu的占用率不高------------------------------------------------------

    待续,遇到其他的优化技巧会增加。

  • 相关阅读:
    两层或以上的showModalDialog解决方法
    我想学什么技术该怎样学
    中英文颜色代码参考
    来个实时更新文本框关于某个项的值
    JavaScript操作XML(一)
    关于css中的position在各大浏览器(IE,FireFox,Opera)中表现问题
    兼容IE/FF的手动触发事件的函数
    兼容各主浏览器透明的CSS
    判断浏览器类型的脚本
    Meta标签详解
  • 原文地址:https://www.cnblogs.com/zigewb/p/3088856.html
Copyright © 2020-2023  润新知