dck*_*ney 1 t-sql sql-server-2008-r2
我有一个类似于以下的查询:
SELECT id FROM MyTable
WHERE eventCount > eventCutoff * eventFactor
Run Code Online (Sandbox Code Playgroud)
eventCount
和eventCutoff
被定义为 smallint 和eventFactor
浮点数。
我有两个问题:是否有一个隐式eventCount
转换为浮点数进行比较?如果是这样,这会阻止我有效地利用 上的索引eventCount
吗?
这种转换经常会发生,并且它们通常会影响基数估计(因此会影响计划质量)。这将取决于数据类型、现有索引、基数等。例如,此查询在任何情况下都可能无法查找,因为 SQL Server 可能无论如何都在使用扫描。
您应该能够通过检查执行计划来确定这是否是您的问题 -eventCount
如果您第一次eventFactor
转换为smallint
? 如果您使用的局部smallint
变量会导致与过滤器匹配的行数相同,该怎么办?从这里我们无法分辨...