Sql参数大小 - 设置为最大大小的负面影响

本文关键字:影响 设置 参数 Sql | 更新日期: 2023-09-27 17:47:21

我有一个SqlCommand,我想调用Prepare()它的CommandType = Text(它不能是存储过程)。

为此,我需要将参数上的 Size 属性设置为非零,否则会引发异常。将所有参数的Size设置为最大可能的大小是否有任何负面影响,即使实际值的大小永远不会接近该大小? 有没有更好的方法可以做到这一点?

Sql参数大小 - 设置为最大大小的负面影响

我认为做这样的事情唯一潜在的负面影响是参数的内存分配成本。

由于您正在调用"Prepare()",我猜您计划对同一 SqlConnection 多次使用 SqlCommand,这表明可能会使用它的离散代码部分(如果为准备好的命令关闭连接,命令文本将不得不在下次使用时重新传输到服务器)。

如果您知道参数的性质,似乎您可能对它们的潜在大小有所了解。 如果没有,那么我看不出你有什么选择,真的,除了为每个声明一个相当大的大小 - 大到足以容纳大多数/任何潜在值。

如果您使用仅接受参数名称和值的 SqlParameter 构造函数,则这是框架执行此操作的方式。 客户端可能会有轻微的低效率,但我从未注意到查询性能的差异。

假设您使用的是 CommandType = Text,您应该能够以编程方式将大小设置为要发送的参数的实际大小。

仅当数据大小接近要发送的数据类型的最大大小时,才会看到性能较差。 如果参数相对于命令文本的大小总是很大,则从网络流量的角度来看,切换到存储进程只会看到最小的性能提升。

请发布您的代码示例。 无需在参数上设置 Size 属性即可调用 。准备()。

顺便说一句,您可能真的不需要打电话.Prepare(),特别是当你调用 .紧随其后的执行()。