代码之家  ›  专栏  ›  技术社区  ›  David B

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

  •  1
  • David B  · 技术社区  · 18 年前

    我有一个 SqlCommand 我想打电话给你 Prepare() 谁的 CommandType = Text 不能 可以是存储过程)。

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

    4 回复  |  直到 5 年前
        1
  •  3
  •   Jared    18 年前

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

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

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

        2
  •  0
  •   Eric Z Beard    18 年前

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

        3
  •  0
  •   Austin Salonen gmlacrosse    18 年前

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

        4
  •  0
  •   MusiGenesis    18 年前

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

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