锁定老帖子 主题:update 速度慢
精华帖 (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 又是一高人,高人越来越多了。 |
|
返回顶楼 | |
发表时间:2012-11-23
建议用存储过程吧
|
|
返回顶楼 | |
发表时间: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可以用这样的写法! 我用不确定的语句只是不知道别的数据库能不能这样用! |
|
返回顶楼 | |
发表时间: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; |
|
返回顶楼 | |
发表时间: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可以用这样的写法! 我用不确定的语句只是不知道别的数据库能不能这样用! 确实不行喀,建表后自己更新一下就知道了 |
|
返回顶楼 | |
发表时间: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 这样子,确实可以啊..我刚刚又试了一遍.. |
|
返回顶楼 | |
发表时间: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上面跑的 |
|
返回顶楼 | |
发表时间: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都建立索引 |
|
返回顶楼 | |
发表时间:2013-09-23
重新建表吧,这样更新快不了
|
|
返回顶楼 | |
发表时间: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; 存储过程可以试试,游标遍历不知道速度如何 |
|
返回顶楼 | |