当前位置: 首页 > 面试题库 >

SQL-.NET-SqlParameters-AddWithValue-如果未指定Param Type,是否会对性能产生负面影响?

寿丰
2023-03-14
问题内容

http://msdn.microsoft.com/zh-
CN/library/system.data.sqlclient.sqlparametercollection.addwithvalue.aspx

我习惯于使用add()函数将sql参数添加到sqlCommand中。这使我可以指定sqlParameter的类型,但是需要另一行来设置值。

使用AddWithValue函数很好,但是它跳过了“指定参数类型”步骤。

我猜想这会导致参数作为包含在单引号(’‘)中的字符串发送出去,但是我不确定。

是这种情况,这会导致存储过程的性能大大降低吗?

注意:我了解通过指定参数的数据类型来验证.NET方面的用户数据是很好的-我只关心.NET或SQL方面的AddWithValue的反射类型开销。


问题答案:

类型推导发生在客户端。在内部SqlParameter,它基本上具有位切换语句,以确定您指定的值所对应的SQL类型。因此,发送到SQL
Server的内容没有什么区别,但是确定.NET类型对应的SQL类型的开销很小。在宏伟的方案中,性能成本甚至不会像在数据库调用中实际花费的时间那样短暂地显示出来。

您仍然可以在指定SQL类型的同时一行执行此操作:

cmd.Parameters.Add("@something", SqlDbType.NVarChar).Value = someString;


 类似资料:
  • 使用时,是否有需要考虑的性能影响? 我正在编写一个从目录检索文件的查询,这就是查询: 那么,在决定进行这样的转换时,是否应该考虑某种性能影响--还是只在处理大量文件时才考虑?这是一个可以忽略不计的转换吗?

  • 问题内容: 我怀疑Java代码中未使用的导入和未使用的对象是否会对性能产生影响? 假设一个对象已初始化并且从未使用过,会发生什么?未使用进口的成本是多少 问题答案: 这是一个非常普遍的问题。 像大多数性能问题一样,最好的方法是编写最清晰,最简单的代码,因为这样可以提高代码的可维护性,并有助于确保代码即使更改后也能正常运行。(聪明/难以理解/不必要地开始,详细的代码可以快速运行,但是由于只是凡人而改

  • 问题内容: 背景: 我有一个叫做car的表,里面有很多二手车,大约有100万行。该表有170列多一点。该表仅在各个列上建立索引。大多数列是布尔值(例如has_automatic_gearbox等),其余列是字符串和数字(​​例如颜色和价格)。这些汽车以视图显示,其中我使用了170列中的约80列。 我的问题: 所以我的问题是,是否在执行搜索时仅从表中选择80列,或者另一方面,我仅由这80列组成的新表

  • 为什么以下未有效使用的行(在方法中:getAllDefinedVars)会对最终结果产生影响: List collect=AllVars.Stream().Filter(v->false).collect(Collectors.ToList()); 如果我删除整个方法和调用此方法的一行代码(generateOneSetOfBools中的第一行),我最终会得到另一个结果。 如果... 提到的行对列表

  • 问题内容: 所以我有一个查询,在SELECT中需要一堆CASE语句。这不是原始的设计,而是折衷的一部分。 因此查询看起来像这样: 我的问题是,将所有这些CASE语句更改为直接列引用会对性能产生什么影响。 换句话说:如果我将每个CASE语句更改为一个列名,并从查询中删除了所有CASE语句,那么会对性能产生很大影响,为什么? 我正在对此进行测试,因此我可以弄清楚性能是否受到影响,但是我对WHY的细节也

  • 我正在设计高通量系统,在那里我将有几个生产者。 我的主题将被分割。生产者将发送记录作为键值对。 键将用于对数据进行分区。 消费者将被组织在消费者组中(他们将被分配相同的组id,以便他们可以同时使用来自同一主题但来自不同分区的消息)。 Kafka保证消息在单个分区中的顺序。 消费者将被分配公平份额的分区。 唯一让我担心的是,我的分区键不会以循环方式分发消息,有些分区可能比其他分区更忙。 问:不均匀的