存储过程优化,请优化高手进来帮我看看,我这段存储过程要扫行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
...全文
351 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用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秒
希望高手帮我看看能不能优化一下,在线等
内容概要:本文介绍了软件定义汽车(SDV)的最佳实践案例,重点围绕基于Vector技术的电子电气(E/E)架构设计与实现。文档展示了高算力计算平台(HPC)、区域控制器(Zone ECU)和车载网络(如CAN、Ethernet)的系统架构布局,并结合AUTOSAR操作系统(Classic/Adaptive)、虚拟化(Hypervisor)和SOA服务设计,构建现代化车载系统。通过vCANdrive平台演示了从开发、测试(SIL/HIL)、到OTA升级的全流程,涵盖传感器、执行器、应用层软件及云端协同的集成方案。同时展示了硬件原型(如树莓派、Triboard)和MICROSAR系列工具链在实际项目中的应用。; 适合人群:从事汽车电子系统开发、车载软件架构设计以及智能网联汽车研发的工程师和技术管理人员,具备一定的嵌入式系统或AUTOSAR基础者更佳。; 使用场景及目标:①理解软件定义汽车的整体架构设计方法;②掌握基于Vector工具链的HPC与区域控制器集成方案;③实现OTA更新、SIL/HIL测试、ETH-CAN通信转换等关键技术验证;④支持智能驾驶(ADAS)与智能座舱(IVI)系统的快速原型开发。; 阅读建议:建议结合Vector相关工具(如PREEvision、CANoe4SW、MICROSAR)进行实践操作,重点关注系统分层设计、通信机制与软件更新流程,同时可参考文档中的硬件连接示意图与信号映射关系进行仿真与实车验证。

34,871

社区成员

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

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