zoukankan      html  css  js  c++  java
  • 一个SQL语句的优化(sqlserver)

    最早的写法:

    WITH T AS
    (SELECT case when Col1 IS NULL OR Col1=N'' then Col2 else Col1 end as Code,case when Col1 IS NULL OR Col1=N'' then 1 else 0 end as Flag FROM YM  WHERE Col_076 BETWEEN '2018-07-25' AND '2018-08-03' AND Col_478=N'xx' AND Col_346 LIKE N'%dd%'),
    D AS (SELECT Code,province,city  FROM Adds)
    SELECT province AS 省,city as 市,COUNT(1) as 票数 FROM 
    (SELECT A.DR_250 as province,A.DR_251 as city FROM T INNER JOIN TB AS A ON A.DR_203=T.Code WHERE T.Flag=0
     UNION ALL
     SELECT D.province,D.city FROM T INNER JOIN D ON D.Code=T.Code WHERE T.Flag=1
     UNION ALL
     SELECT '' AS province,'' AS city FROM T WHERE Code IS NULL OR Code=N'') AS S 
    GROUP BY province,city;

    最新的写法:

    SELECT case when Col1 IS NULL OR Col1=N'' then Col2 else Col1 end as Code,case when Col1 IS NULL OR Col1=N'' then 1 else 0 end as Flag into #T FROM YM WHERE Col_076 BETWEEN '2018-07-25' AND '2018-08-03' AND Col_478=N'xx' AND Col_346 LIKE N'%dd%';
    SELECT Code,province,city into #D  FROM Adds;
    SELECT province AS 省,city as 市,COUNT(1) as 票数 FROM 
    (SELECT A.DR_250 as province,A.DR_251 as city FROM #T INNER JOIN TB AS A ON A.DR_203=#T.Code WHERE #T.Flag=0
    UNION ALL
    SELECT #D.province,#D.city FROM #T INNER JOIN #D ON #D.Code=#T.Code WHERE #T.Flag=1
    UNION ALL
    SELECT '' AS province,'' AS city FROM #T WHERE Code IS NULL OR Code=N'') AS S GROUP BY province,city;
    DROP table #T;
    DROP table #D;

    新的写法比原始写法性能高出太多(原语句执行会超时),最大的原因是对with语句理解有误!!!

  • 相关阅读:
    图片的通道数和卷积核的深度
    神经网络中使用Batch Normalization 解决梯度问题
    python3没有urllib2 出现报错:语法错误
    pip安装时ReadTimeoutError解决办法
    我的学习
    动态(不定长)数组初始化
    关于c中的一些新函数
    排序算法
    vc6.0批量加注释
    endnote的安装和使用必备的几个步骤(简单有效整理版)
  • 原文地址:https://www.cnblogs.com/kingge/p/9418993.html
Copyright © 2011-2022 走看看