• ADADADADAD

    mysql中in和exists的区别是什么[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 10:28:33

    作者:文/会员上传

    简介:

    exists和in的区别有:in是把外表和内表做hash连接,先查询内表;exists是对外表做loop循环,循环后在对内表查询;在外表大的时用in效率更快,内表大用exists更快exists和in的区别  #

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    exists和in的区别有:in是把外表和内表做hash连接,先查询内表;exists是对外表做loop循环,循环后在对内表查询;在外表大的时用in效率更快,内表大用exists更快

    exists和in的区别  

    #对B查询涉及id,使用索引,故B表效率高,可用大表 -->外小内大select * from A where exists (select * from B where A.id=B.id);
    #对A查询涉及id,使用索引,故A表效率高,可用大表 -->外大内小select * from A where A.id in (select id from B);

    (1)exists是对外表做loop循环,每次loop循环再对内表(子查询)进行查询,那么因为对内表的查询使用的索引(内表效率高,故可用大表),而外表有多大都需要遍历,不可避免(尽量用小表),故内表大的使用exists,可加快效率;

    (2)in是把外表和内表做hash连接,先查询内表,再把内表结果与外表匹配,对外表使用索引(外表效率高,可用大表),而内表多大都需要查询,不可避免,故外表大的使用in,可加快效率。

    (3)如果查询的两个表大小相当,那么用in和exists差别不大。如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in。

    mysql中in和exists的区别是什么.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载