SQL Server 2000 临时表与表变量

发布于 2024-07-17 00:59:52 字数 90 浏览 5 评论 0原文

存储一些临时数据(一个中 50k 行,另一个中 50k 行)来执行计算会更有效。 我将每晚执行一次此过程。

在比较这样的事情时,如何检查效率?

What would be more efficient in storing some temp data (50k rows in one and 50k in another) to perform come calculation. I'll be doing this process once, nightly.

How do you check the efficiency when comparing something like this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夕色琉璃 2024-07-24 00:59:52

结果会因磁盘 (#temp) 或内存 (@temp) 中哪一个更容易存储数据而异。

以下参考文献中的一些摘录

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

关于 50k 行的具体情况:

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

参考:

The results will vary on which will be easier to store the data, in disk (#temp) or in memory (@temp).

A few excerpts from the references below

  • A temporary table is created and populated on disk, in the system database tempdb.
  • A table variable is created in memory, and so performs slightly better than #temp tables (also because there is even less locking and logging in a table variable). A table variable might still perform I/O to tempdb (which is where the performance issues of #temp tables make themselves apparent), though the documentation is not very explicit about this.
  • Table variables result in fewer recompilations of a stored procedure as compared to temporary tables.
  • [Y]ou can create indexes on the temporary table to increase query performance.

Regarding your specific case with 50k rows:

As your data size gets larger, and/or the repeated use of the temporary data increases, you will find that the use of #temp tables makes more sense

References:

冬天的雪花 2024-07-24 00:59:52

使用表变量和临时表之间可能存在很大的性能差异。 在大多数情况下,临时表比表变量更快。 我从私人 SQL Server MVP 新闻组获取了以下提示,并获得了 Microsoft 的许可与您分享。 一位 MVP 注意到,尽管使用表变量的查询不会在大型 SMP 设备上生成并行查询计划,但使用临时表(本地或全局)并在相同环境下运行的类似查询确实会生成并行计划。

更多来自SQL Mag(不幸的是,需要订阅,我会尝试并立即查找更多资源)

编辑:以下是来自 代码项目

There can be a big performance difference between using table variables and temporary tables. In most cases, temporary tables are faster than table variables. I took the following tip from the private SQL Server MVP newsgroup and received permission from Microsoft to share it with you. One MVP noticed that although queries using table variables didn't generate parallel query plans on a large SMP box, similar queries using temporary tables (local or global) and running under the same circumstances did generate parallel plans.

More from SQL Mag (subscription required unfortunately, I'll try and find more resources momentarily)

EDIT: Here is some more in depth information from CodeProject

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文