SQLServer向临时表插入数据示例
2014-06-27来源:

SQLServer向临时表插入数据,用临时表和表变量代替游标会极大的提高性能,下面有个示例,大家可以参考下。

代码如下:

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))

会提示error"Thereisalreadyanobjectnamed'#DirtyOldWIPBOM'inthedatabase"

为什么?

[笔记]:千万不要用游标,用临时表和表变量代替游标会极大的提高性能,今天用游标处理700行数据用了2小时,用临时表不到1秒就搞定。

更多信息请查看IT技术专栏

推荐信息
Baidu
map