SQL Server 2000临时表vs表变量

Sai*_*han 3 sql-server variables sql-server-2000

什么会更有效地存储一些临时数据(一个50k行,另一个50k)来执行计算.我每晚都会做一次这个过程.

比较这样的东西时,你如何检查效率?

bof*_*ynn 6

结果将更容易在磁盘(#temp)或内存(@temp)中存储数据.

以下参考文献的一些摘录

  • 在系统数据库tempdb中的磁盘上创建并填充临时表.
  • 表变量在内存中创建,因此比#temp表稍微好一点(因为在表变量中锁定和记录的次数更少).表变量可能仍然对tempdb执行I/O(这是#temp表的性能问题使其显而易见的地方),尽管文档对此并不十分明确.
  • 与临时表相比,表变量导致存储过程的重新编译更少.
  • [Y]您可以在临时表上创建索引以提高查询性能.

关于50k行的具体情况:

随着您的数据量变大,和/或临时数据的重复使用增加,您会发现使用#temp表更有意义

参考文献:

  • 您可以在#表上创建其他索引,而不能在变量上创建. (3认同)