疑问: 什么情况下 SQLServer 会隐式(即在语句中没有#,##,但实际上使用了临时表) 使用 临时表,
这个隐式的临时表的作用域会持续到什么时候(一个语句内?一个存储过程内?一个连接内?一段时间?)
网上有篇文章说
---- where条件中的'in'在逻辑上相当于'or',所以语法分析器会将in ('0','1')转化
为id_no ='0' or id_no='1'来执行。我们期望它会根据每个or子句分别查找,再将结果
相加,这样可以利用id_no上的索引;但实际上(根据showplan),它却采用了"OR策略"
,即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉
重复行,最后从这个临时表中计算结果。因此,实际过程没有利用id_no上索引,并且完
成时间还要受tempdb数据库性能的影响。
-----
这里说 使用 Or 条件就可能用到临时表,但是我自己在查询分析器中执行 查询执行计划 ,却看不到
任何使用临时表的迹象,是否因为 查询的数据量太小
请大家踊跃讨论一下,