nvarchar(max)-如何加快在SQL中只获取有意义字符串的速度
我有一个表,它的列带有nvarchar(max)-如何加快在SQL中只获取有意义字符串的速度,sql,sql-server,ssis,etl,Sql,Sql Server,Ssis,Etl,我有一个表,它的列带有Nvarchar(Max)。该列90%的时间具有255到500之间的字符串长度。有些甚至超过了22000个,这些都不是企业用于报告目的的XML所必需的。总之,长话短说是消除所有多余体积的最好办法。我已经试过了 left(column,500) 及 我已将目标列的长度设置为500。 但是,仅因为该列的存在,将表从源加载到目标需要一段时间。我正在源代码中执行SSI。我还转到了输出列,忽略了截断。无论如何,我都可以减少加载此专栏所需的时间。这些方法似乎需要加载整个长度。任何建议
Nvarchar(Max)
。该列90%的时间具有255到500之间的字符串长度。有些甚至超过了22000个,这些都不是企业用于报告目的的XML所必需的。总之,长话短说是消除所有多余体积的最好办法。我已经试过了
left(column,500)
及
我已将目标列的长度设置为500。
但是,仅因为该列的存在,将表从源加载到目标需要一段时间。我正在源代码中执行SSI。我还转到了输出列,忽略了截断。无论如何,我都可以减少加载此专栏所需的时间。这些方法似乎需要加载整个长度。任何建议都将不胜感激。NVARCHAR(MAX)
(即使使用像子字符串
或LEFT
这样的函数)将消耗大量内存,并将很快填满缓冲区。检查DefaultBufferMaxSize
以及属性BLOBTempStoragePath
和BufferTempStoragePath
将它们设置为最佳值可能会提高性能,但请注意,您已经对它们进行了相应的配置,因为这就像一把双刃剑
此外,如果源和目标位于不同的服务器上,则网络也可能是一个问题,因为所有数据都必须通过网络从SQL server传输到SSIS服务器。你可以试着换一下房间
这些链接提供了更多信息
substring(column,1,500)