一個UPDATE語句能否更新兩個表的數據?

chenxdb 2006-11-29 03:26:15
有二個表數據量非常大,數量級為千萬級以上,現要進行關鍵字段對比,如果一樣則要在兩個TABLE中一個字段進行進行標記,如下所示:關鍵字段為ID
Table1
ID,Name,Flag
1,XX,0
2,XX,0
3,XX,0
4,XX,0

ID,Name,Flag
1,XX,0
2,XX,0
5,XX,0
6,XX,0

運行目的結果為:
Table1
ID,Name,Flag
1,XX,1
2,XX,1
3,XX,0
4,XX,0

Table2
ID,Name,Flag
1,XX,1
2,XX,1
5,XX,0
6,XX,0


目前做的方法為:
update a set a.flag=1 from Table1 a inner join Table2 b on a.id =b.id
update b from b.flag=1 Table1 a inner join Table2 b on a.id =b.id

因數據量比較大,所有的運算完成,將近二個小時,請問高手,有無法方法提升運算速度,或者一個SQL語句就可完成兩個TABLE的字段更新?

...全文
181 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
LouisXIV 2006-11-29
  • 打赏
  • 举报
回复
不能

用触发器
yangyangxie 2006-11-29
  • 打赏
  • 举报
回复
去掉inner join,直接from两个表应该会快点
leo_lesley 2006-11-29
  • 打赏
  • 举报
回复
create trigger tt on a
for update
as

update b set b.flag = a.flag from inserted a where a.id = b.id
leo_lesley 2006-11-29
  • 打赏
  • 举报
回复
create trigger tt on a
for update
as

update b set b.flag = a.flag from inserted where a.id = b.id
dawugui 2006-11-29
  • 打赏
  • 举报
回复
update a set a.flag=1 from Table1 a inner join Table2 b on a.id =b.id

把这下面这句话放触发器里面.
create trigger tt on a for insert
as
begin
update b from b.flag=1 Table1 a inner join Table2 b on a.id =b.id
end
marco08 2006-11-29
  • 打赏
  • 举报
回复
建議樓主用trigger
fish_yht 2006-11-29
  • 打赏
  • 举报
回复
用个触发器不行么?
更新a表的时候随便就更新了b表
marco08 2006-11-29
  • 打赏
  • 举报
回复
不能
playwarcraft 2006-11-29
  • 打赏
  • 举报
回复
在2個表的id上建索引看看

34,838

社区成员

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

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