首页 新闻 会员 周边

大家来看看这个sql语句怎么优化,一个公司的面试题

0
悬赏园豆:30 [已关闭问题] 关闭于 2010-05-23 22:24

存在两个表A和B,都拥有字段id,field1,field2,现在要执行下列语句:

INSERT INTO B SELECT * FROM A WHERE id NOT IN (SELECT id FROM B),

你觉得上面的SQL语句的需要优化吗?如果需求优化,请写出你优化后的语句。

风遥的主页 风遥 | 初学一级 | 园豆:10
提问于:2010-05-12 20:29
< >
分享
所有回答(4)
0

如果B是大表,A是小表,就不要这么做咯

谢小漫 | 园豆:436 (菜鸟二级) | 2010-05-12 23:25
0

我写了一个语句,B表有3条记录,A表有100条记录,可能记录少,速度没有什么差别,执行计划也相同:

INSERT INTO B(id, field1, field2)
SELECT id, field1, field2 FROM A
WHERE not exists (SELECT 1 FROM B where b.id = a.id);

Jack Tang | 园豆:45 (初学一级) | 2010-05-12 23:25
0

如果B 表很大 Jack Tang 的写法效率要高很多

eaglet | 园豆:17139 (专家六级) | 2010-05-13 08:04
0

对一般不要使用select *

程序新青年 | 园豆:841 (小虾三级) | 2012-04-18 11:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册