• 全部
  • 基础类
  • 应用实例
  • 新技术前沿

帮忙优化一下存储过程! 谢谢!

duzidengdai521 2008-11-12 11:38:18
由于数据量太大 这个存储过程 执行起来 太慢了 谁能帮忙优化一下 实现同样的功能 谢谢!



CREATE PROCEDURE peoplechange
AS
begin
declare @sqlStr varchar(5000)
declare @oldBaseName varchar(50)
declare @newBaseName varchar(50)
set @oldBaseName='icme'
set @newBaseName='icme2'
while @@fetch_status = 0
begin

----上课表
select @sqlStr='insert into '+@newBaseName+'..上课表'
select @sqlStr=@sqlStr+'(id,课题编号,人员编号,日期,状态) '
select @sqlStr=@sqlStr+'select left(newid(),35),isnull('+@oldBaseName+'..上课表.课题编号,'' ''),isnull('+@oldBaseName+'..上课表.人员编号,'' ''),isnull('+@oldBaseName+'..上课表.日期,'' ''),0 '
select @sqlStr=@sqlStr+'from '+@oldBaseName+'..上课表 where 课题编号 not in(select 课题编号 from '+@newBaseName+'..上课表) or 人员编号 not in (select 人员编号
from '+@newBaseName+'..上课表) or 日期 not in (select 日期 from '+@newBaseName+'..上课表)'

exec(@sqlStr)

end
end
...全文
43 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
duzidengdai521 2008-11-12
怎么用临时表啊 ? 能帮我改成用临时表吗? not in 又该 怎么样改啊
谢谢了啊 急!
回复
happycat1029 2008-11-12
提几点意见,供参考:
1.数据量大的话你在执行insert into到表很耗费时间,可考虑用临时表
2.not in 在数据量大的时候很耗时间
回复
相关推荐
发帖
MS-SQL Server
创建于2007-09-28

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
申请成为版主
帖子事件
创建了帖子
2008-11-12 11:38
社区公告
暂无公告