关于kis12.3 采购价格刷新非常慢与重复数据问题!!
金蝶云社区-云社区用户TkAx1234
云社区用户TkAx1234
1人赞赏了该文章 941次浏览 未经作者许可,禁止转载编辑于2014年07月09日 08:57:58

问题一:采购价格表,查询速度过慢,
例:客户账套有物料400多种,供应商有300多种。
采购价格表分为两种方式展现:供应商和物料
选择物料时,先选在某上级物料组,再选择明细物料,数据展现时间在400毫米到1秒内,数据总数200条左右。
选择供应商时,先选在某上级供应商组,在选择明细供应商,数据展现时间在10秒到20秒或更长时间,数据总数500条左右。
经分析,查询过慢的主要原因为后台查询语句问题。
--------------------------------以下为原查询语句------------------------------------------
declare @Number as varchar(255)
select @Number=case fdetail when 1 then FNumber+'%' else FNumber+'.%' end from t_item where FItemID=571
select @Number = case when @Number='*%' then '%%' else @Number end
SELECT distinct u1.FSupID,u1.FItemID,u1.FEntryID,t1.FName,
t1.FNumber,
t1.FModel,t2.FName AS FUnitName,
u1.FStartQty,u1.FEndQty,(CASE u1.FPType WHEN 1 THEN '采购单价' ELSE '委外加工单价' END) AS FPType,
u1.FPrice,t3.FName AS FCyName,u1.FDiscount,u1.FLeadTime,t1.Fqtydecimal,FPriceDecimal,
u2.FCurrencyID as FPOHCyID,u3.FName AS FPOHCyName,
(CASE u2.FPOHighPrice WHEN 0 THEN (CASE t1.FPriceFixingType WHEN 1 THEN (CASE u1.FPType WHEN 1 THEN t1.FPOHighPrice ELSE t1.FWWHghPrc END) ELSE 0 END) ELSE u2.FPOHighPrice END) AS FPOHighPrice,
u1.FQuoteTime,u1.FDisableDate,u1.FRemark,
(CASE u1.Fused WHEN 1 THEN 'Y' ELSE '' END) AS FUsed
FROM t_SupplyEntry u1 INNER JOIN t_ICItem t1 ON u1.FItemID=t1.FItemID
INNER JOIN t_Supply u2 ON u1.FSupID=u2.FSupID AND u1.FItemID=u2.FItemID AND u1.FPType=u2.FPType
INNER JOIN t_MeasureUnit t2 ON t2.FItemID=u1.FUnitID
INNER JOIN t_Currency t3 ON t3.FCurrencyID=u1.FCyID
INNER JOIN t_Currency u3 ON u3.FCurrencyID=u2.FCurrencyID
INNER JOIN t_Supplier v1 ON u1.FSupID=v1.FItemID
WHERE t1.FErpClsID not in (6,8) and v1.FNumber like @Number
ORDER BY t1.FNumber,u1.FQuoteTime,u1.FEntryID
------------------------------------------------------------------------------------------
造成数据查询过慢的主要原因在最后WHERE t1.FErpClsID not in (6,8) and v1.FNumber like @Number 在这里使用了v1.FNumber like @Number造成检索过慢。
如果将v1.FNumber like @Number
修改为 u1.FSupID=(select FItemID from t_Supplier where v1.FNumber=@Number)
或者在定义变量时只需要判断物料是否存在即可,无需增加%进行like筛选直接使用 FItemID,就能进一步增加查询速度。

采购价格中物料和供应商都是自动更新其结构树,只需要增加具体的明细即可,在查询的时候按照结构树查询即可查询出具体的供应商id和物料id进行查询即可。

问题二: 目前软件采购价格资料里允许重复数据,包括新增时,导入时还有批量新增时,这样就不知道哪些价格维护了,哪些没维护,造成麻烦,请在这里做个限制,不允许录入和导入重复数据