实战:上亿数据如何秒查
作者:网络转载 发布时间:[ 2015/4/14 12:49:09 ] 推荐标签:数据库 秒查 SQL
--已知SourceSN集合求解对应的SN和SNCust集合------------------------------------------
SELECT LotPK AS SourceLotPK,LotName AS SrouceLotName INTO#WorkLotX510 FROM MMLots WITH(NOLOCK)WHERE EXISTS(SELECT 1 FROM#WorkSourceSNT1 b WHERE b.SourceSN=MMLots.LotID)
SELECT a.LotPK,a.SourceLotPK into#WorkLotX520 FROM MMLotOperations a WITH(NOLOCK)WHERE EXISTS(SELECT 1 FROM#WorkLotX510 b WHERE b.SourceLotPK=a.SourceLotPK)
SELECT a.LotPK,a.SourceLotPK,b.SrouceLotName INTO#WorkLotX530 FROM#WorkLotX520 a JOIN#WorkLotX510 b ON a.SourceLotPK=b.SourceLotPK
INSERT INTO#FinalLotName SELECT b.LotName,a.SrouceLotName,NULL FROM#WorkLotX530 a JOIN(SELECT LotPK,LotName FROM MMLots WITH(NOLOCK))b on a.LotPK=b.LotPK--b的里面加不加WHERE RowDeleted=0待确定
SELECT a.LotName,a.SourceLotName,b.SNCust INTO#WorkLotX540 FROM#FinalLotName a LEFT JOIN CO_SN_LINK_CUSTOMER b WITH(NOLOCK)ON a.LotName=b.SNMes
DELETE FROM#FinalLotName
INSERT INTO#FinalLotName SELECT LotName,SourceLotName,SNCust FROM#WorkLotX540
-------------------------------------------------------------------------------------
SELECT SN,MaterialID,MESOrderID,OnPlantID INTO#WorkLotX550 FROM CO_SN_GENERATION a WITH(NOLOCK)
WHERE SNType='IntSN'AND SNRuleName='ProductSNRule'AND OnPlantID=@OnPlant
AND EXISTS(SELECT 1 FROM#FinalLotName b WHERE a.SN=b.LotName)
INSERT INTO#FinalCO_SN
SELECT a.LotName,a.SourceLotName,a.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote FROM#FinalLotName a
LEFT JOIN#WorkLotX550 b ON a.LotName=b.SN
LEFT JOIN#WorkSourceSNT1 c ON a.SourceLotName=c.SourceSN
END
END
END
--2.3
IF@comdef<>''
BEGIN
SELECT Val INTO#WorkComdef FROM fn_String_To_Table(@comdef,',',1)
--此@comdef条件求解出来的是SourceSN
SELECT SN AS SourceSN,MaterialID AS ComMaterials,VendorID,DateCode,SNNote INTO#WorkSourceSNT16 FROM CO_SN_GENERATION a WITH(NOLOCK)WHERE EXISTS(SELECT 1 FROM#WorkComdef b WHERE a.MaterialID=b.Val)
----------------------------------------------------------------------------------------------------
--条件判断(逻辑分析)开始
IF EXISTS(SELECT 1 FROM#FinalCO_SN)--如果前面判断的查询条件有值
BEGIN
SELECT a.LotName,a.SourceLotName,a.SNCust,a.MaterialID,a.ComMaterials,a.MESOrderID,a.OnPlantID,a.VendorID,a.DateCode,a.SNNote INTO#TMP516 FROM#FinalCO_SN a WHERE EXISTS(SELECT 1 FROM#WorkComdef b WHERE a.matl_def_id=b.Val)
DELETE FROM#FinalCO_SN
INSERT INTO#FinalCO_SN SELECT LotName,SourceLotName,SNCust,MaterialID,ComMaterials,MESOrderID,OnPlantID,VendorID,DateCode,SNNote FROM#TMP516
END
ELSE
BEGIN
IF EXISTS(SELECT 1 FROM#FinalLotName)
BEGIN
--查出SourceLotName对应的查询字段
SELECT a.SourceSN,a.VendorID,a.DateCode,a.SNNote,a.ComMaterials INTO#SourceLTX56 FROM#WorkSourceSNT16 a WHERE EXISTS(SELECT 1 FROM#FinalLotName b WHERE a.SourceSN=b.SourceLotName)
--查出SN对应的查询字段
SELECT SN,MaterialID,MESOrderID,OnPlantID INTO#WorkSNT5106 FROM CO_SN_GENERATION a WITH(NOLOCK)
WHERE SNType='IntSN'AND SNRuleName='ProductSNRule'AND OnPlantID=@OnPlant
AND EXISTS(SELECT 1 FROM#FinalLotName b WHERE a.SN=b.LotName)
INSERT INTO#FinalCO_SN
SELECT a.LotName,a.SourceLotName,d.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote FROM#FinalLotName a
LEFT JOIN#WorkSNT5106 b ON a.LotName=b.SN
LEFT JOIN#WorkSourceSNT16 c ON a.SourceLotName=c.SourceSN
LEFT JOIN CO_SN_LINK_CUSTOMER d WITH(NOLOCK)ON a.LotName=d.SNMes
END
ELSE
BEGIN
--已知SourceSN集合求解对应的SN和SNCust集合------------------------------------------
SELECT LotPK AS SourceLotPK,LotName AS SrouceLotName INTO#WorkLotX5106 FROM MMLots WITH(NOLOCK)WHERE EXISTS(SELECT 1 FROM#WorkSourceSNT16 b WHERE b.SourceSN=MMLots.LotID)
SELECT a.LotPK,a.SourceLotPK into#WorkLotX5206 FROM MMLotOperations a WITH(NOLOCK)WHERE EXISTS(SELECT 1 FROM#WorkLotX5106 b WHERE b.SourceLotPK=a.SourceLotPK)
SELECT a.LotPK,a.SourceLotPK,b.SrouceLotName INTO#WorkLotX5306 FROM#WorkLotX5206 a JOIN#WorkLotX5106 b ON a.SourceLotPK=b.SourceLotPK
INSERT INTO#FinalLotName SELECT b.LotName,a.SrouceLotName,NULL FROM#WorkLotX5306 a JOIN(SELECT LotPK,LotName FROM MMLots WITH(NOLOCK))b on a.LotPK=b.LotPK--b的里面加不加WHERE RowDeleted=0待确定
SELECT a.LotName,a.SourceLotName,b.SNCust INTO#WorkLotX5406 FROM#FinalLotName a LEFT JOIN CO_SN_LINK_CUSTOMER b WITH(NOLOCK)ON a.LotName=b.SNMes
DELETE FROM#FinalLotName
INSERT INTO#FinalLotName SELECT LotName,SourceLotName,SNCust FROM#WorkLotX5406
-------------------------------------------------------------------------------------
SELECT SN,MaterialID,MESOrderID,OnPlantID INTO#WorkLotX5506 FROM CO_SN_GENERATION a WITH(NOLOCK)
WHERE SNType='IntSN'AND SNRuleName='ProductSNRule'AND OnPlantID=@OnPlant
AND EXISTS(SELECT 1 FROM#FinalLotName b WHERE a.SN=b.LotName)
INSERT INTO#FinalCO_SN
SELECT a.LotName,a.SourceLotName,a.SNCust,b.MaterialID,c.ComMaterials,b.MESOrderID,b.OnPlantID,c.VendorID,c.DateCode,c.SNNote FROM#FinalLotName a
LEFT JOIN#WorkLotX5506 b ON a.LotName=b.SN
LEFT JOIN#WorkSourceSNT16 c ON a.SourceLotName=c.SourceSN
END
END
END
/**
*3)条件判断结束
**/
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系SPASVO小编(021-61079698-8054),我们将立即处理,马上删除。
相关推荐
在测试数据库性能时,需要注意哪些方面的内容?测试管理工具TC数据库报错的原因有哪些?怎么解决?数据库的三大范式以及五大约束编程常用的几种时间戳转换(java .net 数据库)优化mysql数据库的几个步骤数据库并行读取和写入之Python实现深入理解数据库(DB2)缓冲池(BufferPool)国内三大云数据库测试对比预警即预防:6大常见数据库安全漏洞数据库规划、设计与管理数据库-事务的概念SQL Server修改数据库物理文件存在位置使用PHP与SQL搭建可搜索的加密数据库用Python写一个NoSQL数据库详述 SQL 中的数据库操作详述 SQL 中的数据库操作Java面试准备:数据库MySQL性能优化

sales@spasvo.com