存储过程优化,请优化高手进来帮我看看,我这段存储过程要扫行8秒,相当郁闷

CQP 2006-11-13 03:20:03
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go

-- =============================================
-- Author: CHENQP
-- Create date: 9:31 2006-11-13
-- Description: 用于取得初烟货位数据放入全局临时表##LocationsStorageReturnOrder
-- =============================================
ALTER PROCEDURE [dbo].[usp_TBManagerQuery_GetRawTLWarehouse]
AS
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE name='##storInTemp' AND xtype='U')
DROP TABLE ##storInTemp
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE name='##storOutTemp' AND xtype='U')
DROP TABLE ##storOutTemp
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE name='##TempLocationIn' AND xtype='U')
DROP TABLE ##TempLocationIn
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE name='##TempLocationOut' AND xtype='U')
DROP TABLE ##TempLocationOut
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE name='##LocationsMoveStorage' AND xtype='U')
DROP TABLE ##LocationsMoveStorage
IF EXISTS(SELECT * FROM tempdb..sysobjects WHERE name='##LocationsStorageReturnOrder' AND xtype='U')
DROP TABLE ##LocationsStorageReturnOrder

DECLARE @Select varchar(8000)

declare @d1 datetime set @d1=getdate()

-- 货位入库信息
SELECT
VGoodsLocationC,
Vtrancode,
VStartPoint,
V_OldGBGrade,
V_GBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
INTO ##storInTemp
FROM
V_InStorehouseInfo
WHERE VGoodsLocationC
IN (SELECT VGoodsLocationC FROM V_InStorehouseInfo)
or VGoodsLocationC in (SELECT VGoodsLocationC_In FROM V_StorMoveInfo)
GROUP BY
VGoodsLocationC,Vtrancode,VStartPoint,V_OldGBGrade,V_GBGrade

select [d1语句执行花费时间(毫秒)]=datediff(ms,@d1,getdate())

declare @d2 datetime set @d2=getdate()

-- 加上移库移入数、插入冲账数据进行计算
-- Modify by:CHENQP
INSERT INTO ##storInTemp
SELECT
VGoodsLocationC_In,
VTranCode,
V_ProducingArea,
V_OldGBGrade,
V_GBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
FROM
V_StorMoveInfo
WHERE
V_CommitFlag = '已经提交'
AND (VGoodsLocationC_In
IN (SELECT VGoodsLocationC FROM ##storInTemp)
OR VGoodsLocationC_In
IN (SELECT VGoodsLocationC_In FROM V_StorMoveInfo))
GROUP BY
VGoodsLocationC_In, VTranCode,V_ProducingArea,V_OldGBGrade,V_GBGrade UNION ALL
SELECT
VGoodsLocationC,
V_TranCode,
V_ProducingArea,
V_GBGradeOld,
V_GBGrade,
I_PackageCountBalance,
N_WeightBalance
FROM
V_StorStrikeBalanceInfo
WHERE
VGoodsLocationC
IN (SELECT VGoodsLocationC FROM ##storInTemp)

select [d2语句执行花费时间(毫秒)]=datediff(ms,@d2,getdate())

-- 将所有货位入库信息分组得出SUM
-- ##storInTemp 记录数 34492
declare @d8 datetime set @d8=getdate()
SELECT
VGoodsLocationC,
Vtrancode,
VStartPoint,
V_OldGBGrade,
V_GBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
INTO
##TempLocationIn
FROM
##storInTemp
GROUP BY
VGoodsLocationC,Vtrancode,VStartPoint,V_OldGBGrade,V_GBGrade
select [d8语句执行花费时间(毫秒)]=datediff(ms,@d8,getdate())

declare @d4 datetime set @d4=getdate()
-- 货位出库信息
SELECT
VGoodsLocationC,
Vtrancode,
VGoodsLocation,
V_OldGBGrade,
V_GBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
INTO
##storOutTemp
FROM
V_OutStorehouseInfo
WHERE
VGoodsLocationC IN (SELECT VGoodsLocationC FROM ##storInTemp)
GROUP BY
VGoodsLocationC,Vtrancode, VGoodsLocation, V_OldGBGrade,V_GBGrade
select [d4语句执行花费时间(毫秒)]=datediff(ms,@d4,getdate())

declare @d9 datetime set @d9=getdate()
-- 加上移库移出数
INSERT INTO
##storOutTemp (
VGoodsLocationC,
Vtrancode,
VGoodsLocation,
V_OldGBGrade,
V_GBGrade,
IPackageCount,
NWeight
)
SELECT
VGoodsLocationC_Out,
VTranCode,
V_ProducingArea,
V_OldGBGrade,
V_GBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
FROM
V_StorMoveInfo
WHERE
VGoodsLocationC_Out
IN (SELECT VGoodsLocationC FROM ##storInTemp)
AND V_CommitFlag = '已经提交'
GROUP BY
VGoodsLocationC_Out,Vtrancode,V_ProducingArea,V_OldGBGrade,V_GBGrade
select [d9语句执行花费时间(毫秒)]=datediff(ms,@d9,getdate())

declare @d10 datetime set @d10=getdate()
-- 出库数据 + 移库移出数据
SELECT
VGoodsLocationC,
Vtrancode,
VGoodsLocation,
V_OldGBGrade,
V_GBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
INTO
##TempLocationOut
FROM
##storOutTemp
GROUP BY
VGoodsLocationC,Vtrancode,VGoodsLocation,V_OldGBGrade,V_GBGrade
select [d10语句执行花费时间(毫秒)]=datediff(ms,@d10,getdate())

declare @d11 datetime set @d11=getdate()

UPDATE
##TempLocationIn
SET
##TempLocationIn.IPackageCount = ##TempLocationIn.IPackageCount - ##TempLocationOut.IPackageCount,
##TempLocationIn.NWeight = ##TempLocationIn.NWeight - ##TempLocationOut.NWeight
FROM
##TempLocationOut
WHERE
##TempLocationOut.[VGoodsLocationC] = ##TempLocationIn.[VGoodsLocationC] AND
##TempLocationOut.[Vtrancode] = ##TempLocationIn.[Vtrancode] AND
##TempLocationOut.[VGoodsLocation] = ##TempLocationIn.[VStartPoint] AND
##TempLocationOut.[V_OldGBGrade] = ##TempLocationIn.[V_OldGBGrade] AND
##TempLocationOut.[V_GBGrade] = ##TempLocationIn.[V_GBGrade]

select [d11语句执行花费时间(毫秒)]=datediff(ms,@d11,getdate())
---------------------------------------------------------------------------------------------------
declare @d12 datetime set @d12=getdate()
DELETE FROM ##TempLocationIn WHERE IPackageCount = 0 AND NWeight = 0
select [d12语句执行花费时间(毫秒)]=datediff(ms,@d12,getdate())

-- 获取发货地 年度 收购类型 入库日期 运单号 司磅员
declare @d13 datetime set @d13=getdate()
SELECT
A.*,
B.DTobaccoDate,
B.VSBY,
B.VReserveType,
B.DInDate
INTO
##LocationsMoveStorage
FROM
##TempLocationIn A
LEFT JOIN
T_StorRealIn B
ON
A.Vtrancode = B.Vtrancode
ORDER BY A.VGoodsLocationC
select [d13语句执行花费时间(毫秒)]=datediff(ms,@d13,getdate())

declare @d14 datetime set @d14=getdate()
SELECT
identity(int,1,1) AS OrderID,
VGoodsLocationC,
V_GBGrade,
VStartPoint,
CONVERT(CHAR(4),DTobaccoDate,112) AS DTobaccoDate,
VReserveType,
VSBY,
DInDate,
VTranCode,
V_OldGBGrade,
SUM(IPackageCount) AS IPackageCount,
SUM(NWeight) AS NWeight
INTO
##LocationsStorageReturnOrder
FROM
##LocationsMoveStorage
GROUP BY
VGoodsLocationC,V_GBGrade,VStartPoint,DTobaccoDate,VReserveType,VSBY,DInDate,VTranCode,V_OldGBGrade
select [d14语句执行花费时间(毫秒)]=datediff(ms,@d14,getdate())
-- select * from ##LocationsStorageReturnOrder -- 最终初烟货位库存结果集

DROP TABLE ##storOutTemp
DROP TABLE ##TempLocationIn
DROP TABLE ##TempLocationOut
DROP TABLE ##LocationsMoveStorage
...全文
338 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
marco08 2006-11-16
  • 打赏
  • 举报
回复
你的存儲過程太誇張了
lhxhappy 2006-11-16
  • 打赏
  • 举报
回复
up
CQP 2006-11-14
  • 打赏
  • 举报
回复
up
CQP 2006-11-14
  • 打赏
  • 举报
回复
看样子没人帮我了:(
Ivan_it 2006-11-13
  • 打赏
  • 举报
回复
mark
Ivan_it 2006-11-13
  • 打赏
  • 举报
回复
CQP 2006-11-13
  • 打赏
  • 举报
回复
我的调试结果:
d1语句执行花费时间(毫秒) 236
d2语句执行花费时间(毫秒) 453
d8语句执行花费时间(毫秒) 1670
d4语句执行花费时间(毫秒) 533
d9语句执行花费时间(毫秒) 186
d10语句执行花费时间(毫秒) 1156
d11语句执行花费时间(毫秒) 2656
d12语句执行花费时间(毫秒) 216
d13语句执行花费时间(毫秒) 203
d14语句执行花费时间(毫秒) 876
marco08 2006-11-13
  • 打赏
  • 举报
回复
關注
CQP 2006-11-13
  • 打赏
  • 举报
回复
这个问题困扰我二三天了,要执行8秒
希望高手帮我看看能不能优化一下,在线等
VR(Virtual Reality)即虚拟现实,是一种可以创建和体验虚拟世界的计算机技术。它利用计算机生成一种模拟环境,是一种多源信息融合的、交互式的三维动态视景和实体行为的系统仿真,使用户沉浸到该环境中。VR技术通过模拟人的视觉、听觉、触觉等感觉器官功能,使人能够沉浸在计算机生成的虚拟境界中,并能够通过语言、手势等自然的方式与之进行实时交互,创建了一种适人化的多维信息空间。 VR技术具有以下主要特点: 沉浸感:用户感到作为主角存在于模拟环境中的真实程度。理想的模拟环境应该使用户难以分辨真假,使用户全身心地投入到计算机创建的三维虚拟环境中,该环境中的一切看上去是真的,听上去是真的,动起来是真的,甚至闻起来、尝起来等一切感觉都是真的,如同在现实世界中的感觉一样。 交互性:用户对模拟环境内物体的可操作程度和从环境得到反馈的自然程度(包括实时性)。例如,用户可以用手去直接抓取模拟环境中虚拟的物体,这时手有握着东西的感觉,并可以感觉物体的重量,视野中被抓的物体也能立刻随着手的移动而移动。 构想性:也称想象性,指用户沉浸在多维信息空间中,依靠自己的感知和认知能力获取知识,发挥主观能动性,寻求解答,形成新的概念。此概念不仅是指观念上或语言上的创意,而且可以是指对某些客观存在事物的创造性设想和安排。 VR技术可以应用于各个领域,如游戏、娱乐、教育、医疗、军事、房地产、工业仿真等。随着VR技术的不断发展,它正在改变人们的生活和工作方式,为人们带来全新的体验。

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧