haitao:
【技术贴,数据库,mssql】mssql2000以后,多了一个表变量,据说性能比临时表好很多,但是需要预先知道每一个字段并定义好
[阅读: 699] 2007-12-20 10:02:50
mssql2000以后,多了一个表变量,据说性能比临时表好很多,但是需要预先知道每一个字段并定义好
临时表可以“select 一系列字段 into #临时表 from ...”一下子自动直接得到与“一系列字段”一致的表结构
如果用表变量,需要先:
declare @tbxxx table (字段1 定义,字段2 定义,...字段n 定义)
然后 insert @tbxxx select 字段1,字段2,...字段n from ...
这样显然繁琐了很多,而且 字段1,字段2,...字段n 需要写2遍,日后如需要修改,一定要2边一起改!
如果表变量也支持自动根据查询得到表结构,就好了
可惜sql2005也没支持这样的“需求”
问题背景:想把2个无关的表(记录数相同)在一个记录集里输出
如果支持这样的写法,也许不会用到表变量:
select a.*,b.*
from (select identity(int) faid, fa1,fa2...fan from tba ...) a
left join (select identity(int) fbid, fb1,fb2...fbm from tbb ...) b on a.faid=b.fbid
可惜mssql的identity函数只能在into一个表时使用。。。。。