博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL查询中in和exists的区别
阅读量:698 次
发布时间:2019-03-17

本文共 328 字,大约阅读时间需要 1 分钟。

当A表数据与baiB表数据一样大时,in与exists效率差不多,可任选一个使用。in 和 exists的区别如下:

1、运用情况不同

sql中in适用于子查询得出的结果集记录较少,主查询中的表较大且又有索引的表,。sql中exist适用于外层的主查询记录较少,子查询中的表大,又有索引的时候。

2、驱动顺序不同

IN是先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。exists是以外层表为驱动表,先被访问。

3、对NULL值处理不同。

IN不对NULL进行处理,exists会对NULL值进行处理。

4、底层原理不同

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

转载地址:http://qoehz.baihongyu.com/

你可能感兴趣的文章