gpt4 book ai didi

sql - SQL中临时表与物理表的比较速度是多少?

转载 作者:行者123 更新时间:2023-12-03 00:18:39 25 4
gpt4 key购买 nike

我有一个脚本需要临时提取数据以对其执行额外操作,但在脚本运行后不需要进一步存储它。我目前将相关数据存储在一系列临时本地表(CREATE TABLE #table)中,然后在使用完成后将其删除。我正在考虑切换到物理表,以相同的方式处理(CREATE TABLE 表),如果脚本的速度会有所提高(或者其他优势,也许?)。

...那么,临时表和物理表之间的性能有区别吗?根据我的阅读,临时表只是物理表,只有运行脚本的 session 才能查看(减少锁定问题)。

编辑:我应该指出,我正在谈论物理表与临时表。有很多关于临时表与表变量的信息,例如 http://sqlnerd.blogspot.com/2005/09/temp-tables-vs-table-variables.html .

最佳答案

临时表在 SQL Server 中是一个很大的问题。

  • 它们会导致查询计划重新编译,成本高昂。
  • 创建和删除表也是您要添加到流程中的成本高昂的操作。
  • 如果有大量数据进入临时数据,您的操作将因缺乏索引而变慢。您可以在临时表上创建索引。但我绝不会推荐使用临时表来存储大量记录。

您的另一种方法:创建然后删除常规表只会产生相同的开销。

另一种方法:使用现有表,使用附加列来扩充行,以区分哪些行属于每个用户/ session 。消除了创建/删除表的负担,但是,您将需要对生成值以区分行的代码保持偏执,并且您将必须开发一种方法来维护 session 过早结束的情况下的表并且还有剩余的内容(在处理结束时未删除的行)。

我建议您重新考虑您的处理策略。有些替代方案就像使用相关查询、派生表或表变量一样简单。看看:http://www.sql-server-performance.com/articles/per/temp_tables_vs_variables_p1.aspx

<小时/>

编辑:创建和删除常规表的方法以及重用通过附加字段增强的常规表的方法:两者都会生成查询计划重新编译,因为更改的数据量将触发重新评估表统计信息。同样,最好的方法是找到处理数据的替代方法。

关于sql - SQL中临时表与物理表的比较速度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220151/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com