当前位置: 代码迷 >> Sql Server >> 带@的表有什么好处,该如何处理
  详细解决方案

带@的表有什么好处,该如何处理

热度:412   发布时间:2016-04-24 20:34:48.0
带@的表有什么好处
我看见SAP B1下面的表 居然是 @BCENOTE 这样子命名的,我用普通的查询语句如下
SELECT * FROM @BCENOTE
出来以下错误提示
消息 1087,级别 15,状态 2,第 1 行
必须声明表变量 "@BCENOTE"。
SAP 为什么要搞这样子的表出来, 是疯了么,我活了好久,才第一次看到

------解决方案--------------------
引用:
Quote: 引用:

你活了很久, 但用Sql Server 不一定时间很长吧……
与临时表相比, 由于它在内存中(注:只限于较少的数量时), 运行速度快, 感觉也比临时表更自然。
弱点是不能存储太多记录, 超过一万行(机器好也不要超过五万行)记录就最好不要用表变量, 改用临时表吧。 

学习了,从来没用过表变量的酱油路过。
我会用存储过程把要查询的数据一次性装进dataset里,然后对dataset里的数据进行查询和处理。数据量从500-50W不等。。。


你只学了C#, 没有用心去学Sql Server.

Sql Server的效率提高才是真正的提高。

取数据是最费时间的, 如果要客户等超过3秒, 体验就不好了。

你还需要在这个方面大力提高……
------解决方案--------------------
引用:
表变量,与临时表相比, 由于它在内存中...
你只学了C#, 没有用心去学Sql Server.
Sql Server的效率提高才是真正的提高。取数据是最费时间的, 如果要客户等超过3秒, 体验就不好了。你还需要在这个方面大力提高……

速度还好,因为毕竟是一次性load进去内存,也就是第一次运行load的时候消耗点时间。一次load,多次处理运行嘛,哈哈
另外,纠正你一个小小的错误,表变量和临时表都是在tmpDB中,不是在内存中 :)
------解决方案--------------------
引用:
Quote: 引用:

从2005及以后,有了表变量的概念,和编程中的变量是一个意思,只不过它是一个表类型的变量,可以像表一样来使用它。但它不支持索引(只能定义一个主键并默认带一个聚集索引)。一般数据量小的时候,用它来缓存

++

说得很好!

你活了很久, 但用Sql Server 不一定时间很长吧……
表变量, 你试着用几次了就会爱上, 作为临时存储多行记录没有什么比它更好了, 毕竟它象一个表。
与临时表相比, 由于它在内存中(注:只限于较少的数量时), 运行速度快, 感觉也比临时表更自然。

弱点是不能存储太多记录, 超过一万行(机器好也不要超过五万行)记录就最好不要用表变量, 改用临时表吧。 


一直是这么理解的
但是最近的讨论,好像说表变量和临时表,都是会写盘的(不仅仅是在内存)。。。。。。。。
------解决方案--------------------
引用:
但是最近的讨论,好像说表变量和临时表,都是会写盘的(不仅仅是在内存)。。。。。。。。

简单点说,表变量和临时表就是在tmpdb中,不是内存中,这一点我很肯定。但是表变量比临时表性能差很多,能不用就不用
------解决方案--------------------
表变量和临时表都是在存储过程中作为中间数据集使用,楼主说的将数据加载到内存的dataset中再进行操作,这样不见得快,因为如果你是B/S的架构,面向N多人访问,你的内存还吃得消吗,很可能会溢出。还不如让DBMS去帮你完成这些事情。
  相关解决方案