两则实现相同功能的代码比较(使用临时表与不用临时表比较)

原创 2006年06月09日 16:03:00

if (not exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[old_outid]') and OBJECTPROPERTY(id, N'IsUserTable') = 1))
begin
 select customerid,outid into old_outid from t_customers
 --update  t_customers set outid='请输入新的学工号'
/* --把新工号恢复成老工号值
UPDATE T_Customers
SET T_Customers.outid = old_outid.outid
FROM old_outid
WHERE old_outid.customerid = T_Customers.CustomerID
*/
end


select *  into #dpt from (SELECT  dpcode1+dpcode2+dpcode3 as 部门代码,dpname1+'/'+dpname2+'/'+dpname3 as 部门名称  FROM T_Department where dpname1 is not null and dpname2 is not null and dpname3 is not null union all SELECT dpcode1+dpcode2+dpcode3 as 部门代码,dpname1+'/'+dpname2 as 部门名称 FROM T_Department where dpname1 is not null and dpname2 is not null and dpname3 is  null UNION ALL SELECT  dpcode1+dpcode2+dpcode3 as 部门代码,dpname1 as 部门名称 FROM T_Department where dpname1 is not null and dpname2 is  null and dpname3 is  null) l


SELECT CustomerID, MAX(OpDt) AS 最近一次补卡时间 into #ReNewCard_MaxDt
FROM T_ReNewCard
GROUP BY CustomerID


SELECT 部门名称,Name AS 姓名, Alias AS 别名, CardType AS 卡类, c.outid AS 新工号,o.outid as 旧工号,最近一次补卡时间
FROM T_Customers c inner join #dpt d on d.部门代码=c.account inner join #ReNewCard_MaxDt r on
r.customerid=c.customerid inner join old_outid o on c.customerid=o.customerid
WHERE (c.CardType IN (1, 2))

drop table #dpt
drop table #ReNewCard_MaxDt


/* --作视图代码,功能同上,不便阅读理解与修改更新,但适用广。
SELECT d.部门名称, c.Name AS 姓名, c.Alias AS 别名, c.CardType AS 卡类,
      c.outid AS 新工号, o.outid AS 旧工号, r.最近一次补卡时间
FROM T_Customers c INNER JOIN
          (SELECT dpcode1 + dpcode2 + dpcode3 AS 部门代码,
               dpname1 + '/' + dpname2 + '/' + dpname3 AS 部门名称
         FROM T_Department
         WHERE dpname1 IS NOT NULL AND dpname2 IS NOT NULL AND
               dpname3 IS NOT NULL
         UNION ALL
         SELECT dpcode1 + dpcode2 + dpcode3 AS 部门代码,
               dpname1 + '/' + dpname2 AS 部门名称
         FROM T_Department
         WHERE dpname1 IS NOT NULL AND dpname2 IS NOT NULL AND
               dpname3 IS NULL
         UNION ALL
         SELECT dpcode1 + dpcode2 + dpcode3 AS 部门代码, dpname1 AS 部门名称
         FROM T_Department
         WHERE dpname1 IS NOT NULL AND dpname2 IS NULL AND dpname3 IS NULL)
      d ON d.部门代码 = c.Account INNER JOIN
          (SELECT CustomerID, MAX(OpDt) AS 最近一次补卡时间
         FROM T_ReNewCard
         GROUP BY CustomerID) r ON r.CustomerID = c.CustomerID INNER JOIN
      old_outid o ON c.CustomerID = o.customerid
WHERE (c.CardType IN (1, 2))
*/

sql server 使用循环和临时表处理数据 而不用游标

declare @thismonth datetime;--本月第一秒 SELECT @thismonth=Convert(datetime, CONVERT(nvarchar(10),dateadd...
  • hejisan
  • hejisan
  • 2017年06月28日 21:40
  • 233

sql的临时表使用小结

转载地址:http://www.cnblogs.com/jeffwongishandsome/archive/2009/08/05/1526466.html 数据表的创建方法 1、创建...
  • Micro_Ryan
  • Micro_Ryan
  • 2015年10月08日 14:45
  • 7572

关于oracle 临时表的使用

临时表就是用来暂时保存临时数据(亦或叫中间数据)的一个数据库对象,它和普通表有些类似,然而又有很大区别。它只能存储在临时表空间,而非用户的表空间。ORACLE临时表是会话或事务级别的,只对当前会话或事...
  • benbenchong_ok
  • benbenchong_ok
  • 2016年10月13日 10:09
  • 915

MySQL使用临时表的情况

原文地址:http://www.tuicool.com/articles/BBRFN3B MySQL在以下几种情况会创建临时表: 1、UNION查询; 2、用到TEMPTABLE算法或者是...
  • gmgmyxx
  • gmgmyxx
  • 2017年01月16日 11:13
  • 837

详解Oracle临时表的几种用法及意义

Oracle临时表可以说是提高数据库处理性能的好方法,在没有必要存储时,只存储在Oracle临时表空间中。希望本文能对大家有所帮助。   1 、前言   目前所有使用 Oracle 作为数据库支撑...
  • caixingyun
  • caixingyun
  • 2014年09月06日 09:10
  • 3395

表变量与临时表的优缺点

表变量:     DECLARE @tb  table(id   int   identity(1,1), name   varchar(100))         INSERT @tb     SE...
  • Gordennizaicunzai
  • Gordennizaicunzai
  • 2016年02月28日 17:57
  • 2766

MySQL临时表的简单用法

当工作在非常大的表上时,你可能偶尔需要运行很多查询获得一个大量数据的小的子集,不是对整个表运行这些查询,而是让MySQL每次找出所需的少数记录,将记录选择到一个临时表可能更快些,然后在这些表运行查询。...
  • yu757371316
  • yu757371316
  • 2016年11月04日 13:57
  • 1026

创建和使用临时表详解

创建和使用临时表详解:   ORACLE的临时表在应用系统中有很大的作用,它可以让用户只能够操作各自的数据中而互不干扰,不用担心会破坏或影响其他SESSION/TRANSACTION的数据,这也是数据...
  • lovedieya
  • lovedieya
  • 2013年11月11日 18:23
  • 2567

Oracle查询问题引发临时表使用

分析某段时间内,刷卡金额大于1000的卡的消费记录,写法如下。 SQL语句写法:select a.dno,  a.dcard, a.dcard_money, a.dcard_type, a.ddate...
  • ghs79
  • ghs79
  • 2016年07月19日 19:25
  • 997

查询产生临时表的调优

我们都知道,SQL查询时若产生了临时表,一般要消耗更多的内存,降低查找的效率。因此,当查询时产生了临时表,要进行优化,使引擎在查询时不用创建临时表就能完成查询。示例使用的是MySQL示例数据库saki...
  • qq_33290787
  • qq_33290787
  • 2016年07月18日 15:58
  • 1643
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:两则实现相同功能的代码比较(使用临时表与不用临时表比较)
举报原因:
原因补充:

(最多只允许输入30个字)