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的占用率不高------------------------------------------------------

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

  • 相关阅读:
    [NOI2018]冒泡排序
    四 Synchronized
    三 volatile关键字
    二 原子类
    一 ThreadLocal
    xshell 登录虚拟机ubuntu
    三、kafka主要配置
    二 kafka设计原理
    一. kafka 入门
    Spring boot 学习二:入门
  • 原文地址:https://www.cnblogs.com/zigewb/p/3088856.html
Copyright © 2011-2022 走看看