我正在更新项目代码,以便在从 C# 应用程序查询数据库时最大限度地重用 SQL Server 查询计划。
我们使用 ADO.NET,并且我们正在将所有查询转换为使用 SqlParameters。
当添加一个参数(其值将被设置到 TEXT 类型的表列中)时,我们使用:
[...]
command.Parameters.Add("@MyParamName", SqlDBType.Text, someSize).Value = paramValue;
[...]
如果我们的目标是让这种语句重用查询计划,我应该使用什么大小来代替上面的“someSize”?
是否有一个特殊值可以提供成功让 SQL Server 在每次调用此代码时重新使用查询计划的最佳机会?
更新
来自 @Sean-Lange 的评论 Microsoft 正在弃用 NTEXT、TEXT 和 IMAGE...摘自他在下面的评论中提供的链接:
重要! ntext、text 和 image 数据类型将在 SQL Server 的未来版本。避免在新的数据类型中使用这些数据类型 开发工作,并计划修改当前使用的应用程序 他们。请改用 nvarchar(max)、varchar(max) 和 varbinary(max)。
在 SQL Server 2005 中,文本数据类型已被弃用,取而代之的是 varchar(max)。您可以在此处阅读有关该数据类型的更多信息。 https://learn.microsoft.com/en-us/sql/t-sql/data-types/ntext-text-and-image-transact-sql?view=sql-server-2017
为 TEXT SQL 数据类型创建新的 SqlParameter 变量时,可以使用“-1”作为大小。 这与 VARCHAR(MAX) 相同。 这两个字段是等效的,其中 TEXT 是旧数据类型。 例如:
SqlParameter param1 = new SqlParameter("@Param1Name", SqlDbType.Text, -1);
SqlParameter param2 = new SqlParameter("@Param2Name", SqlDbType.VarChar, -1);
分别适用于 TEXT 和 VARCHAR(MAX) 数据类型。