[数据库汇总]-- 数据库sql中in和exists的区别

阅读 136

2022-11-03


以下是我对这两个关键字的总结比较,供大家参考:

一、常规比较

   (1)exists 可以是多行比较

not exists (select * from md q where q.ipadd=m.ipadd);

   (2)in 只能是单行比较 

select * from md where mdh in(1232,3432,5565);

二、效率比较

exists要比in效率高,

三、使用情况比较

例:大表(A)、小表(B)

    (1)IN适合于外表大而内表小的情况;

select * from A where id in(select id from B);

    (2)EXISTS适合于外表小而内表大的情况

select * from B where id exists (select id from A);

    (3)如果A表和B表大小相当,那么查询效率是没有大差别的

 

(1)(2)(3)原因:

in是把外表和内表作hash连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询;

 

精彩评论(0)

0 0 举报