【发布时间】: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