关于临时表的疑问,请邹建等高手进来讨论一下

zlt982001 2005-04-29 04:15:49
疑问: 什么情况下 SQLServer 会隐式(即在语句中没有#,##,但实际上使用了临时表) 使用 临时表,
这个隐式的临时表的作用域会持续到什么时候(一个语句内?一个存储过程内?一个连接内?一段时间?)

网上有篇文章说
---- where条件中的'in'在逻辑上相当于'or',所以语法分析器会将in ('0','1')转化
为id_no ='0' or id_no='1'来执行。我们期望它会根据每个or子句分别查找,再将结果
相加,这样可以利用id_no上的索引;但实际上(根据showplan),它却采用了"OR策略"
,即先取出满足每个or子句的行,存入临时数据库的工作表中,再建立唯一索引以去掉
重复行,最后从这个临时表中计算结果。因此,实际过程没有利用id_no上索引,并且完
成时间还要受tempdb数据库性能的影响。
-----

这里说 使用 Or 条件就可能用到临时表,但是我自己在查询分析器中执行 查询执行计划 ,却看不到
任何使用临时表的迹象,是否因为 查询的数据量太小
请大家踊跃讨论一下,


...全文
198 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tdtjjiao 2005-04-30
  • 打赏
  • 举报
回复
临时表只是帮助你写完成你想要的结果,用完后
删掉就可以了。
没什么特别的就和一个表一样。
zlt982001 2005-04-30
  • 打赏
  • 举报
回复
up
zlt982001 2005-04-29
  • 打赏
  • 举报
回复
order by 是在临时表生成有序表吗?可以从查询计划或其他地方看出来吗?
这个生成的临时表是执行完后直接销毁还是存在一段时间?
别名也会?

Or 操作到底会不会?
好多疑问。。。。
talantlee 2005-04-29
  • 打赏
  • 举报
回复
order by--
別名---
zlt982001 2005-04-29
  • 打赏
  • 举报
回复
up
fengfangfang 2005-04-29
  • 打赏
  • 举报
回复
在asp.net状态管理中有一种方法是使用数据库临时表的,具体还没有研究过
gdstfox 2005-04-29
  • 打赏
  • 举报
回复
mark

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧