我有一个包含150列的表格。其中大部分属于nvarchar(100) null
类型,有些属于decimal(20,7) null
示例:
Create table myTable
(
ID bigint (PK),
Col1 Nvarchar(100) null,
Col2 Nvarchar(100) null,
Col3 Nvarchar(100) null,
....
Col150 nvarchar(100) null
)
当我进行插入时,我只插入20列。当我尝试插入1或2百万条记录时,需要花费很多时间(使用32gb ram时为1分钟)
当我将相同数量的记录插入临时表时,只需1-2秒。
我也尝试删除主键但结果是一样的。如何加快插入包含大量空nvarchar
列的表格?
答案 0 :(得分:0)
由于你有很多空列我建议使用XML作为列类型,如果可能的话 创建表myTable ( ID bigint(PK), Col1 XML )
这将在您解释的情况下提高您的表现。 由于使用xml是一个更大的主题,您可以阅读更多here
答案 1 :(得分:0)
谈到设计,这显然不是最好的做法,有数百个可以为空的列,大多数时候都是空的。
所以,我可以说:
如果您可以重新设计表格,您可以:
如果您没有任何选择,您可以:
我确信有很多选择,但至少我之前已经完成了所有这些解决方案。
对不起,我不能给你更多的想法。
答案 2 :(得分:0)
您可能会遇到大量的页面拆分。可通过监控(Profiler或DMV)确认。
每个表的列数太多。 需要: