in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。
常常看见人说exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
常常看见人说exists比in效率高的说法是不准确的。如果查询的两个表大小相当,那么用in和exists差别不大。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in
而not extsts 的子查询依然能用到表上的索引。
所以无论那个表大,用not exists都比not in要快。
本文探讨了SQL查询中IN与EXISTS操作符的性能差异。指出两者在不同场景下的表现,强调当外表与内表大小不同时选择合适的操作符的重要性。此外,还对比了NOT EXISTS与NOT IN在查询效率上的区别。
1491

被折叠的 条评论
为什么被折叠?



