求1高效UPDTE语句,立刻结贴.

loveyou17 2013-05-13 10:00:38
--TABLE1
id xdate is_has
a 2013-05-05
b 2013-05-05
C 2013-05-05
a 2013-05-06
--TABLE2(此表数据量很大)
id xdate xcol
a 2013-05-05 xxx
a 2013-05-05 ddd
a 2013-05-05 aaazzz
b 2013-05-05
C 2013-05-05
---期望的结果
id xdate is_has
a 2013-05-05 YES
b 2013-05-05 YES
C 2013-05-05 YES
a 2013-05-06 NO
---------------------------------
判断TABLE1的数据是否存在于TABLE2,根据ID很xdate2个字段判断,其中table2的数据量很大,
求1高效UPDATE方法,多谢!
...全文
167 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
小葫芦 2013-05-13
  • 打赏
  • 举报
回复
如果是sqlserver数据库, 可以这样

update table1 set is_has=(case when t2.id is not null then 'yes' else 'no' end)
from tabel1  t1
left jion table2 t2 on t1.id=t2.id and xdate=t1.xdate
如果是oracle数据库
update table1 set is_has=(case when exists(select 1 from table2 where ID=t1.id and xdate=t1.xdate) then 'yes' else 'no' end) from table1 t1
loveyou17 2013-05-13
  • 打赏
  • 举报
回复
引用 8 楼 DBA_Huangzj 的回复:
频繁的全表update本身就与业务有点出入,没有多少系统是需要这样做的,你要考虑是否设计有问题,不然全表update无论什么方式都会性能底下。
主要是因为这是个不同系统...
  • 打赏
  • 举报
回复
都不知道你要更新什么,如何更新?不同的更新有不同优化方式,你先把UPDATE语句写出来,然后才能帮你优化。
王者天下ii 2013-05-13
  • 打赏
  • 举报
回复
http://database.51cto.com/art/201107/274997.htm,你去看这个吧
發糞塗牆 2013-05-13
  • 打赏
  • 举报
回复
频繁的全表update本身就与业务有点出入,没有多少系统是需要这样做的,你要考虑是否设计有问题,不然全表update无论什么方式都会性能底下。
王者天下ii 2013-05-13
  • 打赏
  • 举报
回复
引用 5 楼 loveyou17 的回复:
[quote=引用 4 楼 DBA_Huangzj 的回复:] [quote=引用 3 楼 yan470925731 的回复:] [quote=引用 2 楼 DBA_Huangzj 的回复:] 你有评估过一次update的数据量吗?也就是每次真正需要update的数量,而且是频繁update还是偶尔一次?
[/quote][/quote] 每次都是全表UPDATE,并且这个操作是频繁操作. TABLE1,和TABLE2是2个不同系统产生的表, [/quote] 你是什么数据库,还有你的sql是在程序里面调用的还是,存储过程里面写这的
习惯性蹭分 2013-05-13
  • 打赏
  • 举报
回复

update table1 set is_has=(case when exists(select 1 from table2 where ID=t1.id and xdate=t1.xdate)
then 'yes' else 'no' end) from table1 t1
loveyou17 2013-05-13
  • 打赏
  • 举报
回复
引用 4 楼 DBA_Huangzj 的回复:
[quote=引用 3 楼 yan470925731 的回复:] [quote=引用 2 楼 DBA_Huangzj 的回复:] 你有评估过一次update的数据量吗?也就是每次真正需要update的数量,而且是频繁update还是偶尔一次?
[/quote][/quote] 每次都是全表UPDATE,并且这个操作是频繁操作. TABLE1,和TABLE2是2个不同系统产生的表,
發糞塗牆 2013-05-13
  • 打赏
  • 举报
回复
引用 3 楼 yan470925731 的回复:
[quote=引用 2 楼 DBA_Huangzj 的回复:] 你有评估过一次update的数据量吗?也就是每次真正需要update的数量,而且是频繁update还是偶尔一次?
[/quote]
王者天下ii 2013-05-13
  • 打赏
  • 举报
回复
引用 2 楼 DBA_Huangzj 的回复:
你有评估过一次update的数据量吗?也就是每次真正需要update的数量,而且是频繁update还是偶尔一次?
發糞塗牆 2013-05-13
  • 打赏
  • 举报
回复
你有评估过一次update的数据量吗?也就是每次真正需要update的数量,而且是频繁update还是偶尔一次?
残月照我心 2013-05-13
  • 打赏
  • 举报
回复
引用 楼主 loveyou17 的回复:
--TABLE1 id xdate is_has a 2013-05-05 b 2013-05-05 C 2013-05-05 a 2013-05-06 --TABLE2(此表数据量很大) id xdate xcol a 2013-05-05 xxx a 2013-05-05 ddd a 2013-05-05 aaazzz b 2013-05-05 C 2013-05-05 ---期望的结果 id xdate is_has a 2013-05-05 YES b 2013-05-05 YES C 2013-05-05 YES a 2013-05-06 NO --------------------------------- 判断TABLE1的数据是否存在于TABLE2,根据ID很xdate2个字段判断,其中table2的数据量很大, 求1高效UPDATE方法,多谢!
多大都没影响吧,你UPdate 又不是全部
lgq_liang 2013-05-13
  • 打赏
  • 举报
回复
你还不如重新设计一套表或者重新搭建一个数据库,当然如果现有两套系统有业务之间的要求的话就另说了

34,593

社区成员

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

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