Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlParameter Size-设置为最大大小的负面影响?_C#_Sql Server_Ado.net - Fatal编程技术网

C# SqlParameter Size-设置为最大大小的负面影响?

C# SqlParameter Size-设置为最大大小的负面影响?,c#,sql-server,ado.net,C#,Sql Server,Ado.net,我有一个SqlCommand,我想调用Prepare(),它的CommandType=Text(它不能是存储过程) 为此,我需要将参数上的Size属性设置为非零,否则会引发异常。将所有参数上的大小设置为最大可能大小是否有任何负面影响,即使实际值的大小永远不会接近该值?有更好的方法吗?如果您使用只接受参数名和值的SqlParameter构造函数,那么框架就是这样做的。客户端可能有点效率低下,但我从来没有注意到查询性能的差异。如果您使用的是CommandType=Text,您应该能够通过编程将大小设

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


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

如果您使用只接受参数名和值的SqlParameter构造函数,那么框架就是这样做的。客户端可能有点效率低下,但我从来没有注意到查询性能的差异。

如果您使用的是CommandType=Text,您应该能够通过编程将大小设置为发送的参数的实际大小


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

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

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


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

请发布一个代码示例。调用.Prepare()不需要在参数上设置大小属性

顺便说一句,您可能真的不需要调用.Prepare(),尤其是在之后立即调用.Execute()时