1 In or的效率说明
IN 的作用相当与OR,如语句: Select * from table1 where tid in (2,3) 和 Select * from table1 where tid=2 or tid=3 是一样的,都会引起全表扫描,如果 tid 上有索引,其索引也会失效。
Sqlserver数据库中 in=or的执行效率一样。
针对其它数据库 in的执行效率比or高。(多家之言)
in or 都可以自动过滤重复数据。 即一条记录只显示一次。
2 In exists
常量数值范围 用 in ,子查询范围 用 in 或 exists。
针对子查询的构建,存在效率问题。
如果是exists,那么以外层表为驱动表,先被访问,如果是IN,那么先执行子查询,所以我们会以驱动表的快速返回为目标。
exists()后面的子查询被称做相关子查询,他是不返回列表的值的.只是返回一个ture或false的结果,其运行方式是先运行主查询一次,再去子查询里查询与其对应的结果。
如果是ture则输出,反之则不输出。
in()后面的子查询是返回一个结果集的。
如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:应该灵活使用in,而不能直接就把IN关键字给完全抛弃不用。要根据操作的数据情况来看。
例如:表A(小表),表B(大表)
select * from A where cc in (select cc from B)
效率低
select * from A where exists(select 1 from B where B.cc=A.cc)
效率高
&

本文详细梳理了SQL查询中的IN, EXISTS, NOT IN, NOT EXISTS等操作符的效率问题,指出在不同情况下选择合适的操作符能显著提升查询速度。例如,子查询结果集小时推荐使用IN,结果集大时推荐使用EXISTS。此外,还讨论了LIKE语句、GROUP BY与WHERE子句的使用、表别名、删除数据时TRUNCATE替代DELETE的效率优势,以及避免在索引列上进行计算等优化策略。"
133076411,19673616,Unity ARFoundation:实现AR看车应用,"['AR开发', 'Unity3D', '移动应用', '编程']
最低0.47元/天 解锁文章
1239

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



