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

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
...全文
66 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
duzidengdai521 2008-11-12
  • 打赏
  • 举报
回复
怎么用临时表啊 ? 能帮我改成用临时表吗? not in 又该 怎么样改啊
谢谢了啊 急!
happycat1029 2008-11-12
  • 打赏
  • 举报
回复
提几点意见,供参考:
1.数据量大的话你在执行insert into到表很耗费时间,可考虑用临时表
2.not in 在数据量大的时候很耗时间

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧