请教一个SQL:从B表查结果更新A表,B表中没有的记录在A表中不用更新

我有两个表,A表有几百万的数据,关键字段为CATA_ID,还有一个需要经常更新的字段CATA_SPEC,B表有字段CATA_ID、CATA_SPEC和UPDATE_TIM... 我有两个表,A表有几百万的数据,关键字段为CATA_ID,还有一个需要经常更新的字段CATA_SPEC,B表有字段CATA_ID、CATA_SPEC和UPDATE_TIME。
现在要写一个SQL更新A表CATA_SPEC,更新取值是B表中CATA_ID等于A表CATA_ID,且B表中UPDATE_TIME大于SYSDATE-1,因为A表数据量过大,每次根据这个条件查到的B表记录又不会太多,所以想没有查到B表记录的就不用更新A表了。
我写了以个SQL:
UPDATE A a SET ( A.CATA_SPEC ) =
(SELECT CATA_SPEC FROM B b WHERE b.CATA_ID=a.CATA_ID)
WHERE EXISTS ( SELECT 1 FROM B b WHERE b.CATA_ID=a.CATA_ID AND b.UPDATE_TIME > SYSDATE-1 )
不过这个语句在PL/SQL里面按F5发现执行的时间还是很长。
请问这个更新SQl该怎么写才好?还有没有别的方法可以提高执行效率,比如在哪里建什么索引的?
展开
 我来答
若以下回答无法解决问题,邀请你更新回答
华夏日长兴
2011-07-20 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3743万
展开全部
b.CATA_ID=a.CATA_ID
这两个字段分别在对应的表里边创建索引
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Trample
2011-07-20 · TA获得超过123个赞
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:126万
展开全部
做表连接,不用子查询
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wangzhiqing999
2011-07-20 · TA获得超过1.6万个赞
知道大有可为答主
回答量:7048
采纳率:100%
帮助的人:3361万
展开全部
不知道 通过创建一个 VIEW 的办法, 会不会速度快一点
http://hi.baidu.com/wangzhiqing999/blog/item/767be28f634ddb00c8fc7aba.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式