论坛首页 综合技术论坛

update 速度慢

浏览 9911 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-11-23  
joaboo 写道
java_frog 写道
hehez 写道
sundoctor 写道
coloforlia 写道
shanhucc 写道
abc-127 写道
UPDATE ONE T,TWO T2  SET T.AGE = T2.AGE WHERE  T2.ID=T.ID
这个比你的快的不知多少陪

        


请问下,这样子的写法是哪个版本支持的,我在我的机器上使用报错。 我用的oracle 10g

10g同问

这样写法真是高人

db2 同问

没听过吧,没用过吧,傻眼了吧你们都,我也傻眼了,现在还没返过神来,我计划周六日好好休息两天醒醒神儿


是不是可以这样子写
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

又是一高人,高人越来越多了。
0 请登录后投票
   发表时间:2012-11-23  
建议用存储过程吧
0 请登录后投票
   发表时间:2012-11-23  
sundoctor 写道
joaboo 写道
java_frog 写道
hehez 写道
sundoctor 写道
coloforlia 写道
shanhucc 写道
abc-127 写道
UPDATE ONE T,TWO T2  SET T.AGE = T2.AGE WHERE  T2.ID=T.ID
这个比你的快的不知多少陪

        


请问下,这样子的写法是哪个版本支持的,我在我的机器上使用报错。 我用的oracle 10g

10g同问

这样写法真是高人

db2 同问

没听过吧,没用过吧,傻眼了吧你们都,我也傻眼了,现在还没返过神来,我计划周六日好好休息两天醒醒神儿


是不是可以这样子写
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

又是一高人,高人越来越多了。


别动不动讽刺人,哥们,你试过么?!
我可以很负责任的告诉你,sqlserver2008可以用这样的写法!
我用不确定的语句只是不知道别的数据库能不能这样用!
0 请登录后投票
   发表时间:2012-11-23  
试试这个吧,你更新表之间的关联查询有问题
Declare
  Cursor CursorC Is
    select t2.id, t2.AGE from ONE t1 join TWO t2 on t1.id = t2.id;

  CursorCR CursorC %Rowtype;

Begin
  For CursorCR In CursorC Loop
 
    Update ONE t Set t.age = CursorCR.age Where t.id = CursorCR.id;
  End Loop;
End;
0 请登录后投票
   发表时间:2012-11-23  
joaboo 写道
sundoctor 写道
joaboo 写道
java_frog 写道
hehez 写道
sundoctor 写道
coloforlia 写道
shanhucc 写道
abc-127 写道
UPDATE ONE T,TWO T2  SET T.AGE = T2.AGE WHERE  T2.ID=T.ID
这个比你的快的不知多少陪

        


请问下,这样子的写法是哪个版本支持的,我在我的机器上使用报错。 我用的oracle 10g

10g同问

这样写法真是高人

db2 同问

没听过吧,没用过吧,傻眼了吧你们都,我也傻眼了,现在还没返过神来,我计划周六日好好休息两天醒醒神儿


是不是可以这样子写
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

又是一高人,高人越来越多了。


别动不动讽刺人,哥们,你试过么?!
我可以很负责任的告诉你,sqlserver2008可以用这样的写法!
我用不确定的语句只是不知道别的数据库能不能这样用!


确实不行喀,建表后自己更新一下就知道了
0 请登录后投票
   发表时间:2012-11-23  
liujiaoshui 写道
joaboo 写道
sundoctor 写道
joaboo 写道
java_frog 写道
hehez 写道
sundoctor 写道
coloforlia 写道
shanhucc 写道
abc-127 写道
UPDATE ONE T,TWO T2  SET T.AGE = T2.AGE WHERE  T2.ID=T.ID
这个比你的快的不知多少陪

        


请问下,这样子的写法是哪个版本支持的,我在我的机器上使用报错。 我用的oracle 10g

10g同问

这样写法真是高人

db2 同问

没听过吧,没用过吧,傻眼了吧你们都,我也傻眼了,现在还没返过神来,我计划周六日好好休息两天醒醒神儿


是不是可以这样子写
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

又是一高人,高人越来越多了。


别动不动讽刺人,哥们,你试过么?!
我可以很负责任的告诉你,sqlserver2008可以用这样的写法!
我用不确定的语句只是不知道别的数据库能不能这样用!


确实不行喀,建表后自己更新一下就知道了


我说的是在sqlserver中的下面这样的写法,
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

这样子,确实可以啊..我刚刚又试了一遍..
0 请登录后投票
   发表时间:2012-11-23  
joaboo 写道
liujiaoshui 写道
joaboo 写道
sundoctor 写道
joaboo 写道
java_frog 写道
hehez 写道
sundoctor 写道
coloforlia 写道
shanhucc 写道
abc-127 写道
UPDATE ONE T,TWO T2  SET T.AGE = T2.AGE WHERE  T2.ID=T.ID
这个比你的快的不知多少陪

        


请问下,这样子的写法是哪个版本支持的,我在我的机器上使用报错。 我用的oracle 10g

10g同问

这样写法真是高人

db2 同问

没听过吧,没用过吧,傻眼了吧你们都,我也傻眼了,现在还没返过神来,我计划周六日好好休息两天醒醒神儿


是不是可以这样子写
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

又是一高人,高人越来越多了。


别动不动讽刺人,哥们,你试过么?!
我可以很负责任的告诉你,sqlserver2008可以用这样的写法!
我用不确定的语句只是不知道别的数据库能不能这样用!


确实不行喀,建表后自己更新一下就知道了


我说的是在sqlserver中的下面这样的写法,
UPDATE T SET T.AGE = T2.AGE FROM ONE T, TWO T2 WHERE T2.ID=T.ID

这样子,确实可以啊..我刚刚又试了一遍..

亲,我错了,我在oracle上面跑的
0 请登录后投票
   发表时间:2012-11-23  
第一(java) 写道
update 语句

UPDATE ONE T
   SET T.AGE =
       (SELECT T2.AGE
          FROM TWO T2
         WHERE T2.ID=T.ID
          );

ONE TWO 表都是百万级别的数据。怎么样更新速度比较快。求最快的方法

两个表的id都建立索引
0 请登录后投票
   发表时间:2013-09-23  
重新建表吧,这样更新快不了
0 请登录后投票
   发表时间:2013-09-23  
liujiaoshui 写道
试试这个吧,你更新表之间的关联查询有问题
Declare
  Cursor CursorC Is
    select t2.id, t2.AGE from ONE t1 join TWO t2 on t1.id = t2.id;

  CursorCR CursorC %Rowtype;

Begin
  For CursorCR In CursorC Loop
 
    Update ONE t Set t.age = CursorCR.age Where t.id = CursorCR.id;
  End Loop;
End;

存储过程可以试试,游标遍历不知道速度如何
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics