SQLServer向臨時(shí)表插入數(shù)據(jù),用臨時(shí)表和表變量代替游標(biāo)會(huì)極大的提高性能,下面有個(gè)示例,大家可以參考下。
代碼如下:
INSERTINTO#DirtyOldWIPBOMSELECTTOP(100)PERCENTdbo.WIP_BOM.Model,dbo.WIP_BOM.PartNumber,WIP_BOM.WIP
FROMdbo.WIP_BOMleftOUTERJOINdbo.BOM_CHINAONLTRIM(dbo.WIP_BOM.Model)=LTRIM(dbo.BOM_CHINA.Model)ANDLTRIM(dbo.WIP_BOM.PartNumber)=LTRIM(dbo.BOM_CHINA.PartNumber)ANDdbo.WIP_BOM.Qty=dbo.BOM_CHINA.QtyANDBOM_CHINA.WIP=
WIP_BOM.WIPWHERE(dbo.BOM_CHINA.ModelISNULL)ANDEXISTS(SELECT*FROMdbo.BOM_CHINAWHEREWIP=WIP_BOM.WIPANDLTRIM(Model)=LTRIM(WIP_BOM.Model))
這樣就可以成功。
代碼如下:
但SELECTTOP(100)PERCENTdbo.WIP_BOM.Model,dbo.WIP_BOM.PartNumber,WIP_BOM.WIPinto#DirtyOldWIPBOM
FROMdbo.WIP_BOMleftOUTERJOINdbo.BOM_CHINAONLTRIM(dbo.WIP_BOM.Model)=LTRIM(dbo.BOM_CHINA.Model)ANDLTRIM(dbo.WIP_BOM.PartNumber)=LTRIM(dbo.BOM_CHINA.PartNumber)ANDdbo.WIP_BOM.Qty=dbo.BOM_CHINA.QtyANDBOM_CHINA.WIP=
WIP_BOM.WIPWHERE(dbo.BOM_CHINA.ModelISNULL)ANDEXISTS(SELECT*FROMdbo.BOM_CHINAWHEREWIP=WIP_BOM.WIPANDLTRIM(Model)=LTRIM(WIP_BOM.Model))
會(huì)提示error"Thereisalreadyanobjectnamed'#DirtyOldWIPBOM'inthedatabase"
為什么?
[筆記](méi):千萬(wàn)不要用游標(biāo),用臨時(shí)表和表變量代替游標(biāo)會(huì)極大的提高性能,今天用游標(biāo)處理700行數(shù)據(jù)用了2小時(shí),用臨時(shí)表不到1秒就搞定。
更多信息請(qǐng)查看IT技術(shù)專欄