gpt4 book ai didi

.net - SqlParameter 如何知道类型

转载 作者:行者123 更新时间:2023-12-04 11:28:00 26 4
gpt4 key购买 nike

我想知道如何SqlParameter知道没有指定的类型吗?

例如,在实例化参数对象时,您不需要指定 DB 类型。以某种方式执行命令时,.net 会为您处理此问题。在幕后是否有某种转换正在发生?当你做/不明确指定类型时是否有成本?

最佳答案

Is there a cost when you do / don't specify the type explicitly?



是的,而且成本可能很大。它与客户端转换无关,而是与服务器端执行有关。您应该阅读 Under the Table - How Data Access Code Affects Database Performance .可能出现的一些问题是:
  • 使用 NVARCHAR 类型可以否定您的索引。如果您使用 SqlCommand.Parameters.AddWithValue("@someparam", "somestring")结果参数是 NVARCHAR类型。如果您的查询包含子句 WHERE somecolumn = @someparamsomecolumn是 VARCHAR 类型并已索引,则类型不匹配将阻止索引使用。
  • 参数长度计划缓存污染。如果您使用 SqlCommand.Parameters.AddWithValue("@someparam", "somestring")它将导致具有参数类型 NVARCHAR(10) 的查询当您使用 SqlCommand.Parameters.AddWithValue("@someparam", "anotherstring")它将导致查询的参数类型为 NVARCHAR(13)这将被视为不同的查询,并产生不同的计划。随着时间的推移,您可以使用数百个计划来污染服务器计划缓存,每个可能的参数长度都有一个。当存在多个参数时,这种情况可能会加剧,每种长度组合都会创建自己的计划

  • 其他类型也可能存在问题,但字符串是最臭名昭著的罪魁祸首。再次,阅读链接的文章,是高度相关的。

    关于.net - SqlParameter 如何知道类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32490005/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com