假设有两张表
table A,有上百个字段,假设用到以下三个字段:c1,c2,c3table B,也有很多字段,也用到以下三个:c1,c2,c3现在a.c3是有值的,b.c3是空的。要求把a.c3的值赋给b.c3,要求是a.c1=b.c1 and a.c2=b.c2
现在的问题是:表A有约700万条数据,表B有300万条数据。
该怎样写sql语句,使得update的效率最高,花费的时间最少?补充:根据c1,c2的值,可以唯一确定一条记录。
table A,有上百个字段,假设用到以下三个字段:c1,c2,c3table B,也有很多字段,也用到以下三个:c1,c2,c3现在a.c3是有值的,b.c3是空的。要求把a.c3的值赋给b.c3,要求是a.c1=b.c1 and a.c2=b.c2
现在的问题是:表A有约700万条数据,表B有300万条数据。
该怎样写sql语句,使得update的效率最高,花费的时间最少?补充:根据c1,c2的值,可以唯一确定一条记录。
set b.c3=
(
select a.c3
from a
where a.c1=b.c1 and a.c2=b.c2
)
set b.c3=
(
select a.c3
from a
where a.c1=b.c1 and a.c2=b.c2
)
where exists
(select 1 from a
where a.c1=b.c1 and a.c2=b.c2 and a.c3=b.c3)