sql - Visual Studio 诊断工具将查询变量显示为 SQL_VARIANT。这是个问题吗?
问题描述
当我使用诊断工具查看在我的应用程序期间运行的查询时,当我单击命令文本并在新窗口中获取全文时,我会看到类似这样的内容,其中定义了查询的变量:
--Type and value data was not available for the following variables. Their values have been set to defaults.
DECLARE @p0 AS SQL_VARIANT;
SET @p0 = NULL;
我担心实际查询正在使用像这样的一些变量,这可能会以不好的方式影响执行计划。这是一个真正的问题还是我只是感到困惑?
解决方案
正在使用像这样的一些变量,这可能会以不好的方式影响执行计划。这是一个真正的问题还是我只是感到困惑?
SQL_VARIANT
具有非常高的Data Type Precedence,所以是的,以这种类型传递参数会导致问题。必须将目标列转换为以SQL_VARIANT
进行比较,以防止使用索引并干扰基数估计。
但正如来自 Visual Studio 的消息所说:
--以下变量的类型和值数据不可用。它们的值已设置为默认值。
所以这并不意味着您的应用程序实际上是使用SQL_VARIANT
. 只是 Visual Studio 无法确定参数类型,因此默认SQL_VARIANT
情况下生成与客户端发送的内容近似的批处理。
推荐阅读
- .net - 在 system.array 上调用 replace 方法
- javascript - 异步数据加载后的jQuery执行函数
- c# - 为什么 ConversationReference 服务 url 与 localhost 不同?
- c# - NReco HtmlToPdfConverter 错误:指定的可执行文件不是此 OS 平台的有效应用程序
- c# - 刚体不粘在盒子上
- javascript - Drop-downs are not showing in my HTML table while calling ajax or putting static JSON
- r - 有条件地组合数据框中不同列中的单词
- vim - Vim:使用 v:count1 作为映射的参数
- java - 在 for 循环中循环 else 语句?
- ios - 表视图不刷新