SQL Server 无法修复“可能影响查询计划选择中的“CardinalityEstimate””转换警告(int到varchar)

rn0zuynd  于 2023-01-29  发布在  其他
关注(0)|答案(1)|浏览(159)

嗨我的项目任务是删除此警告“类型转换表达式(转换(varchar(10),[表达式1017],0))可能会影响查询计划选择“”中的“CardinalityEstimate””。我已经搜索了一天半的时间来解决这个问题,大多数其他问题都不是我所需要的(我已经尝试过他们的解决方案,但仍然有它).我不能只是忽视它像一些答案建议公元前我的任务的全部点是删除它.
CAST(product.Schedule AS VARCHAR(10)) AS [CSACode],
调度列不计算,通常为空或一位整数。
我尝试过减小/增大VARCHAR的大小,使用变量传递值,然后将int型变量转换为varchar(另一个网站说,有时候在将列转换为另一种类型时会出现问题),使用convert而不是cast,然后重新编写大量的代码,以便它可以返回一个int并将其保存回MVC中(这是太多的工作要这样做,我的老板说,这不是他们想要的修复,仍然导致了其他问题),但似乎没有什么可以消除这个警告以外,删除演员完全。
删除此强制转换不会影响行计数,它只会删除select中的强制转换列CSACode。我一直在Google上搜索此CardinalityEstimate,行估计似乎就是它的全部内容。据我所知,它对自身几乎没有影响。enter image description here
这两个问题是我发现的最接近我的问题但没有帮助的问题。How to avoid Implicit Type Conversion
Concatenation of INT columns warning: Type conversion in expression causes CardinalityEstimate warnings in execution plan

taor4pac

taor4pac1#

我在这个最小的例子中得到了同样的错误:

SELECT CAST(product.Schedule AS VARCHAR(10)) AS [CSACode]
FROM (SELECT 123 AS Schedule UNION ALL SELECT NULL) AS product

CAST(product.Schedule AS VARCHAR(10))更改为FORMAT(product.Schedule, 'N0')时,警告消失:

SELECT FORMAT(product.Schedule, 'N0') AS [CSACode]
FROM (SELECT 123 AS Schedule UNION ALL SELECT NULL) AS product

相关问题