zoukankan      html  css  js  c++  java
  • 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的占用率不高------------------------------------------------------

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

  • 相关阅读:
    使用POI操作Excel时对事先写入模板的公式强制执行
    centos7下python3和pycharm安装
    IntelliJ IDEA 快捷键终极大全
    netcore XmlDocument 使用Load和Save方法
    Add File as a Link on Visual Studio
    C#开源项目
    Shell bash和sh区别
    SecureCRT中Vim颜色
    查找局域网中未知设备的IP
    代码分支管理
  • 原文地址:https://www.cnblogs.com/zigewb/p/3088856.html
Copyright © 2011-2022 走看看