最快得到MYSQL两个表的差集
Mysql里不外乎就是 子查询 和 连接 两种方式.
设第一个表为table1, 第二个为table2, table1包含table2.
sql为:
1 //子查询 2 select table1.id from table1 3 where not exists 4 (select 1 from table2 5 where table1.id = table2.id 6 ); 7 8 //外连接 9 select table1.id from table1 10 left join table2 11 on table1.id=table2.id 12 where table2.id is null;
高性能mysql里有类似的例子, 见 "When a correlated subquery is good" 一节. 它给出的数据, 外连接要快.
还有就是, 要最快, 那么最好只对 两张表的主键 做差集, 这样只过覆盖索引, 会快一些.