我是否安全的假设,在那里我有存储使用tempdb
写一个临时表的过程,我会更好,切换到这些表变量,以获得更好的性能?当用表变量速度比临时表
回答
临时表的性能更好。如果使用表变量并且变量中的数据变得太大,则SQL Server会将该变量自动转换为临时表。
它像几乎每个数据库相关的问题一样,取决于你想要做什么。所以没有更多的信息很难回答。
所以我的答案是,试试看看执行计划。以最低的成本使用最快的方式。
我在顶部的评论是否合理,我应该切换吗? – 2012-01-30 10:16:37
很难说,切换与否。如果你想返回一个表变量,并且你的操作在两种方式都很快,是的,我会切换。你真的应该尝试一下。例如,上周我优化了一个变得如此缓慢的查询。 20小时前,现在2分钟。我只是从表变量更改为临时表。返回的数据并不大,只有2000行,但有很多操作和过滤器。 – dknaack 2012-01-30 10:24:26
“如果您使用表变量并且变量中的数据变得太大,则SQL Server会将变量自动转换为临时表。”这个陈述完全是错误的。 – 2013-10-20 19:15:36
@Table可以更快,因为这里少“设置时间”,因为对象是只读存储器。
@Tables虽然有很多捕获。
你可以在@Table上有一个主键,但那是关于它的。其他索引集群非集群组合的列是不可能的。
此外,如果你的表是要包含任何实际的数据量(高于约200也许1000行),然后访问该表会慢一些。特别是当你可能没有一个有用的索引。
#表格在调试时需要删除,因此需要花费更长时间才能创建。并且需要更长时间才能进行设置,因为您需要添加索引作为第二步。但是,如果你有大量的数据,那么它的#tables每次。
即使在你有你可能仍然要使用#Tables,你可以在表上创建一个有用的索引的表小于100行数据的情况。
总之,我使用@Tables大部分时间轻松做简单的PROC等,但任何需要执行应该是一个#Table时。
我曾经相信这个寓言也一样,直到最近,我被卡住了清理查询和(我做的最后一件事)完全相同的查询(测试运行几次,使用相同的PARAMS)使用'#返回在5秒内TempTable'与使用'@ TableVar'的16秒相比 – Jason 2014-10-21 20:30:53
@Tables没有统计数据,所以执行计划需要更多的猜测。因此推荐的1000-ish行的上限。 #表格有统计数据,但是这两个调用之间有can be cached。如果每次SP运行时您的基数差异显着,则您每次都想要REBUILD
和RECOMPILE
。当然,这是一项开销,但必须与垃圾计划的成本进行平衡。
这两种类型都会做IO to TempDB。因此,不,@表不是万能的。
- 1. 临时表vs表变量
- 2. SQL Server表变量VS临时表
- 3. SQL Server 2000临时表与表变量
- 4. 临时表与临时表变量索引
- 5. db2当量的tsql临时表
- 6. 插入速度临时表vs正常表
- 7. 速度相比于列表
- 8. 为什么比使用临时表
- 9. 存在速度/安全性差异在临时表中存储临时数据?
- 10. JSF临时变量
- 11. SQL Server,具有删除与删除临时表与变量表
- 12. 临时表和表变量之间的区别在SQL 2005中
- 13. 包含对表变量或临时表的搜索
- 14. Sql Server 2016临时表或表变量WHILE循环里面
- 15. SQL CLR - 表变量或临时表与集合
- 16. 表变量与温度表
- 17. 使用临时表
- 18. 直列在德比临时表(如DB2)
- 19. SSIS临时临时表
- 20. SQL中临时表与物理表的相对速度是多少?
- 21. T-SQL:使用“从变量”查询更新临时表
- 22. 查看Vs的临时表或临时变量在SQL服务器
- 23. 当应用于数组列表时,Numpy最大速度很慢
- 24. 花栗鼠速度的临时爆发
- 25. 使用表变量/全局临时表实现代码PL/SQL函数
- 26. 如何用1个表格和一些变量的数据创建临时表
- 27. 对临时表
- 28. 临时表
- 29. 删除当前spid的临时表
- 30. 什么时候应该放弃一个表变量的临时表?
临时表中有多少条记录,您的服务器配置(如表变量)可以推送到tempdb上。 http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/03/30/sql-server-table-variable-vs-local-temporary-table.aspx – Kane 2012-01-30 10:02:27
数据不尽相同,但这是一个很好的观点。如果一个表变量会更好的表现少量的数据,那么我会将其切换。 – 2012-01-30 10:04:02
可能重复[SQL Server中的临时表和表变量之间的区别是什么?](http://stackoverflow.com/questions/27894/whats-the-difference-between-a-temp-table-and-table -variable-in-sql-server)或者这个:http:// stackoverflow。com/questions/6991511/sql-server-temp-table-vs-table-variable,可能更多 – gbn 2012-01-30 10:26:21