nvarchar(max) - 如何加速在SQL中只获得有意义的字符串

时间:2017-04-21 20:05:26

标签: sql sql-server ssis etl

我的表格中有一列Nvarchar(Max)。该列占字符串长度在255到500之间的百分之九十。有些超过22000,不需要作为其业务不会用于报告目的的XML的XML。无论如何缩短长篇大论是最好的方法来削减所有多余的批量。我试过通常的

left(column,500)

substring(column,1,500)

我已将目标列设置为500长度。 但是,将表从源加载到目标目标只需要一段时间就可以了。我在源代码中进行SSIS。我也去了输出列并忽略了截断。无论如何,我可以减少加载此列的时间。这些方法似乎与加载全长一样多。任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

NVARCHAR(MAX) (即使使用像SUBSTRINGLEFT这样的功能会花费大量内存并快速填满缓冲区。检查DefaultBufferMaxSize以及属性BLOBTempStoragePathBufferTempStoragePath将它们设置为最佳值可能会提高性能,但请注意您已相应配置它们,因为它就像一把双刃剑。

此外,如果源和目标位于不同的服务器上,则网络也可能是一个问题,因为所有数据都必须通过网络从您的SQL服务器到SSIS服务器。您可以尝试更改Network Packet Size

这些链接提供了更多信息