SELECT
V_TRANSFER_D_STORE_ITEM.ACCT_DT,
V_TRANSFER_D_STORE_ITEM.STORE_CD,
V_TRANSFER_D_STORE_ITEMJAN,
SUM(V_TRANSFER_D_STORE_ITEM.TRANSFER_CNT) AS TRANSFER_CNT,
SUM(V_TRANSFER_D_STORE_ITEM.TRANSFER_COST_AMT) AS TRANSFER_COST_AMT,
SUM(V_TRANSFER_D_STORE_ITEM.TRANSFER_RETAIL_AMT) AS TRANSFER_RETAIL_AMT FROM V_TRANSFER_D_STORE_ITEM ,V_PURCHASE_UPDATE_KEY
WHERE V_TRANSFER_D_STORE_ITEM.ACCT_DT = V_PURCHASE_UPDATE_KEY.ACCT_DT
AND V_TRANSFER_D_STORE_ITEM.STORE_CD = V_PURCHASE_UPDATE_KEY.STORE_CD
AND V_TRANSFER_D_STORE_ITEM.JAN =V_PURCHASE_UPDATE_KEY.JAN
GROUP BY
V_TRANSFER_D_STORE_ITEM.ACCT_DT,
V_TRANSFER_D_STORE_ITEM.STORE_CD,
V_TRANSFER_D_STORE_ITEM.JAN //-----这是哪个自查询的,try!
SELECT * FROM #T WHERE PURCHASE_CNT != 0 AND PURCHASE_COST_AMT != 0 AND PURCHASE_RETAIL_AMT != 0
--这一段去掉建表,这样只会在生成表时暂时锁表。。这个速度会快点
SELECT
ACCT_DT,
STORE_CD,
JAN,
0 AS PURCHASE_CNT ,
0 AS PURCHASE_COST_AMT,
0 AS PURCHASE_RETAIL_AMT
into #TFROM
V_PURCHASE_UPDATE_KEY
GROUP BY
ACCT_DT,
STORE_CD,
JAN
我这儿有个过程,不加事务时2分钟,加上事务30多分也没有执行完成,会是什么原因呢
---------不会,用事务可控制操作的步骤,其中一步出错时,返回所有事务
--联机帮助上讲得详细点
BEGIN TRANSACTION 代表一点,由连接引用的数据在该点是逻辑和物理上都一致的。如果遇上错误,在 BEGIN TRANSACTION 之后的所有数据改动都能进行回滚,以将数据返回到已知的一致状态。每个事务继续执行直到它无误地完成并且用 COMMIT TRANSACTION 对数据库作永久的改动,或者遇上错误并且用 ROLLBACK TRANSACTION 语句擦除所有改动。--------------------------
不加事务时2分钟,加上事务30多分也没有执行完成,会是什么原因呢-------
这与事务没关系,大概是其它操作锁定了表的资源..在查询分析器里,选中所有的语句。。按CTRL+L显示执行计划。。
查看那一段语句占用的资源最多,然后再优化