数据库sql中in和exists的区别

来源:互联网 发布:康明斯诊断软件下载 编辑:程序博客网 时间:2024/05/17 05:12

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

一、常规比较

   (1)exists 可以是多行比较

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

   (2)in 只能是单行比较 

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

二、效率比较

    EXISTS与IN的使用效率的问题,通常情况下采用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
原创粉丝点击