隐式转换是否会对索引使用产生负面影响?

dck*_*ney 1 t-sql sql-server-2008-r2

我有一个类似于以下的查询:

SELECT id FROM MyTable
WHERE eventCount > eventCutoff * eventFactor
Run Code Online (Sandbox Code Playgroud)

eventCounteventCutoff被定义为 smallint 和eventFactor浮点数。

我有两个问题:是否有一个隐式eventCount转换为浮点数进行比较?如果是这样,这会阻止我有效地利用 上的索引eventCount吗?

Aar*_*and 5

这种转换经常会发生,并且它们通常会影响基数估计(因此会影响计划质量)。这将取决于数据类型、现有索引、基数等。例如,此查询在任何情况下都可能无法查找,因为 SQL Server 可能无论如何都在使用扫描。

您应该能够通过检查执行计划来确定这是否是您的问题 -eventCount如果您第一次eventFactor转换为smallint? 如果您使用的局部smallint变量会导致与过滤器匹配的行数相同,该怎么办?从这里我们无法分辨...