【问题标题】:Improve SQL Server insert query performance提高 SQL Server 插入查询性能
【发布时间】:2019-08-27 13:00:00
【问题描述】:

我有一个包含数百万条记录和大量数据的主表。我定期将 300 条记录从临时表插入到主表中。

每次我清除临时表并将新创建的 300 条记录插入临时表时。有时插入查询需要超过 10 秒才能插入到主表中。我们如何才能提高这种性能?

INSERT INTO MAINTABLE (COL1, COL2, COL3)
    SELECT COL1, COL2, COL3 
    FROM #TEMP

【问题讨论】:

  • 尝试在主表中创建索引并查看性能。另外,请尝试分批插入数据,以免填满您的事务日志。
  • 如果没有关于您的数据库的更多信息,我们无法回答。我建议发布一个执行计划。
  • @Avi 我不确定索引如何帮助提高写入性能。如果有的话,由于更新索引的开销,它应该会降低性能
  • 在不了解表的使用模式的情况下,值得注意的是减少 MAINTABLE 表上的索引将减少 RDBMS 更新索引的性能开销。此外,请确保 TEMP 表在内存中。此外,删除 TEMP 表中所有不必要的记录和列,以减少读取的行数。
  • 您必须向我们提供更多信息..例如您如何生成此#Temp? ....是一个过程还是只是这个查询? ...我的意思是..这个查询没问题。

标签: sql sql-server


【解决方案1】:

临时表是在 Tempdb 数据库 中创建的,它们会为 SQL Server 带来额外的开销,从而降低整体性能。

另一种选择是.....如果您使用的是临时表...那么..尽量避免事务....有时它会使您的查询性能变慢(取决于您的数据容量..)。

相反,您可以使用表变量...表变量只能在创建它们的会话中访问。

注意:-- 定义表变量的大小没有限制,因为它取决于内存大小..

Maximum Capicity of Table Variable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-03
    • 2015-08-01
    • 2019-03-20
    • 2015-02-18
    • 2014-11-14
    • 2022-01-09
    • 2014-03-23
    相关资源
    最近更新 更多