这里简单的给自己做个记录: exist和in的区别: select * from a where id in (select id from b) ; select * from a where id exists (select id from b) ; 对于这样的sql查询同一个库,结果是一样的,但是查询速度对于不同情况, 差别较大; 使用in ,sql语句是先执行子查询,也就是先查询b表,在查a表, 而使用exists是先查主表a ,再查字表b; 对于主表数据较多时,我们 使用in速度比exist更快,反之,从表b较大时,使用exist插叙速度更快(都会使用索引), 如果使用的是not in与not exists,直接使用not exists,因为not in 会进行全表扫描 不走索引,not exists会走索引。 |
|