SqlParameter Size - 设置为最大大小的负面影响?
Posted
技术标签:
【中文标题】SqlParameter Size - 设置为最大大小的负面影响?【英文标题】:SqlParameter Size - negative effects of setting to max size? 【发布时间】:2010-09-13 11:44:20 【问题描述】:我有一个SqlCommand
,我想在其CommandType = Text
上调用Prepare()
(它不能是存储过程)。
为此,我需要将参数上的Size
属性设置为非零,否则会引发异常。将所有参数上的Size
设置为最大可能大小是否有任何负面影响,即使实际值的大小永远不会接近那个大小?有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:我认为这样做的唯一潜在负面影响是为参数分配内存的成本。
由于您正在调用“Prepare()”,我猜您正计划针对同一个 SqlConnection 多次使用 SqlCommand,这表明可能会使用它的离散代码部分(如果连接关闭一个准备好的命令,命令文本必须在下次使用时重新传输到服务器)。
如果您了解参数的性质,似乎您可能对它们的潜在大小有所了解。如果没有,那么我真的看不出你有什么选择,而不是为每个声明一个非常大的大小 - 大到足以容纳大多数/任何潜在值。
【讨论】:
【参考方案2】:如果您使用只接受参数名称和值的 SqlParameter 构造函数,框架就是这样做的。客户端可能效率稍低,但我从未注意到查询性能有差异。
【讨论】:
【参考方案3】:鉴于您使用的是 CommandType = Text,您应该能够以编程方式将大小设置为您发送的参数的实际大小。
只有当您的数据大小接近您发送的数据类型的最大大小时,您才会看到性能下降。如果您的参数相对于命令文本的大小总是很大,那么从网络流量的角度来看,切换到存储过程只会看到最小的性能提升。
【讨论】:
【参考方案4】:请发布您的代码示例。您无需在参数上设置 Size 属性即可调用 .Prepare()。
顺便说一句,您可能真的不需要调用 .Prepare(),尤其是当您在之后立即调用 .Execute() 时。
【讨论】:
以上是关于SqlParameter Size - 设置为最大大小的负面影响?的主要内容,如果未能解决你的问题,请参考以下文章