存在两个表A和B,都拥有字段id,field1,field2,现在要执行下列语句:
INSERT INTO B SELECT * FROM A WHERE id NOT IN (SELECT id FROM B),
你觉得上面的SQL语句的需要优化吗?如果需求优化,请写出你优化后的语句。
如果B是大表,A是小表,就不要这么做咯
我写了一个语句,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);
如果B 表很大 Jack Tang 的写法效率要高很多
对一般不要使用select *