我正在使用此查询,但它真的很慢
INSERT INTO a (b,c,d,e,f,g,h,i) SELECT b,c,d,e,f,g,h,i FROM z WHERE b NOT IN (SELECT b FROM a)
做什么是从表z中找到b不在表“a”中并将其导入表a的所有记录。
它真的很慢并且保持计时。有没有让它更快?
感谢您 BigThings
P.S。
答案 0 :(得分:1)
使b
列唯一,然后使用IGNORE
选项INSERT
,以便:
INSERT IGNORE INTO a (b,c,d,e,f,g,h,i)
SELECT b,c,d,e,f,g,h,i FROM z
答案 1 :(得分:0)
INSERT INTO a (b,c,d,e,f,g,h,i) SELECT a.b,a.c,a.d,a.e,a.f,a.g,a.h,a.i FROM z,a WHERE z.b != a.b
答案 2 :(得分:0)
INSERT INTO a (b,c,d,e,f,g,h,i) SELECT b,c,d,e,f,g,h,i FROM z WHERE NOT EXISTS (SELECT 1 FROM a WHERE z.b = a.b)
答案 3 :(得分:0)
使用这个简单的技巧:
INSERT INTO a (b,c,d,e,f,g,h,i)
SELECT b,c,d,e,f,g,h,i
FROM z
LEFT JOIN a on a.b = z.b
WHERE a.b IS NULL;
当b
中没有匹配的行时,您只会获得一行,并且查询将能够有效地使用索引。