时间:2021-07-01 10:21:17 帮助过:11人阅读
性能变化的关键:
#1 执行的先后顺序 谁是驱动表,谁先执行查询,谁后执行查询 #2 执行过程 exists的优点是:只要存在就返回了,这样的话很有可能不需要扫描整个表。 in需要扫描完整个表,并返回结果。 所以,在字表比较小的情况下,扫描全表和部分表基本没有差别;但在大表情况下,exists就会有优势。 看这两个语句: --子查询会执行完全关联,并返回所有符合条件的city_idselect * from areas where id in (select city_id from deals where deals.city_id = areas.id);
--子查询的关联其实是一样的,但子查询只要查到一个结果,就返回了,所以效率还是比较高些的
select * from areas where exists (select null from deals where deals.city_id = areas.id);
#3 字表查询的结果 exists判断子查询的结果是不是存在,但查到什么结果,什么字段,并不关心; in 需要子查询查得的结果给主查询使用 对于in和exists的性能区别:数据库sql语句的exists和in的区别
标签:字段 nbsp 部分 扫描 情况 查询 join 关心 --