Sql 基数估计查询警告
我有一个数据库视图SQL Server 12.0.2269,它汇总了许多表中的数据。我刚刚注意到执行计划上有一个警告,尽管它可能一直存在: 表达式CONVERTvarchar30[t].[RoleID]0中的类型转换可能会影响查询计划选择中的CardinalityEstimate 它引用的实际查询代码用于一个结果字段:-Sql 基数估计查询警告,sql,sql-server,view,warnings,Sql,Sql Server,View,Warnings,我有一个数据库视图SQL Server 12.0.2269,它汇总了许多表中的数据。我刚刚注意到执行计划上有一个警告,尽管它可能一直存在: 表达式CONVERTvarchar30[t].[RoleID]0中的类型转换可能会影响查询计划选择中的CardinalityEstimate 它引用的实际查询代码用于一个结果字段:- (SELECT '|' + CAST(t.RoleID AS varchar) FROM Tag t WHERE t.SourceID = lb.ID FOR
(SELECT
'|' + CAST(t.RoleID AS varchar)
FROM Tag t
WHERE t.SourceID = lb.ID
FOR XML PATH('') ) + '|'
AS TagIDs,
它生成一个像这样的分隔ID列表“|10 | 11 | 12 |”。
RoleID是一个小玩意;是复合主键的一部分,也是外键
由于是tinyint,它的长度不能超过3个字符,但我猜varchar30是默认值
我可以安全地忽略这个警告吗
完整的查询是
将视图[dbo].[LegalBodyReferenceData]创建为
选择
lb.ID,
lb.DisplayName,
出生日期,
lb.DeathDate并标记为DeathDate,
ti.描述作为标题,
p、 名字,
p、 姓,
lb.电话,
lb.电子邮件,
a、 街道,
a、 城镇,
a、 地区,,
a、 邮政编码,
a、 国家,,
COALESCEcf1.ID,ccf.ID作为ClientFileID,
合并CF1.FileStatusID,cf2.FileStatusID作为ClientFileStatusID,
合并CF1.AdviserID,cf2.AdviserID作为ClientFileAdviserID,
合并CF1.DisplayName,cf2.DisplayName作为ClientFileDisplayName,
ISNULLCASTCASE当p.ID不为NULL时,则1或0以位结束,0以IsPerson结束,
ISNULLCASTCASE当co.ID不为NULL时,则1或0以位结束,0以IsCorporate结束,
ISNULLCASTCASE当prov.ID不为NULL时,则1或0作为位结束,0作为IsProvider结束,
ISNULLCASTCASE当Trust.ID不为NULL时,则1 ELSE 0以位结束,0以IsTrust结束,
ISNULLCASTCASE当cbp.ID不为NULL时,则1 ELSE 0以位结束,0以IsCorporateBenefitProvider结束,
选择
“|”+cast.RoleID AS varchar
来自标签t
其中t.SourceID=lb.ID
对于XML路径+“|”
作为塔吉德,
空作为标记,
c、 MaritalStatusID,
p、 性别,,
u、 ID作为用户ID,
ISNULLCASTCASE当ad.ID不为NULL时,则1 ELSE 0以位结束,0以IsAdviser结束,
prov.UniqueIdentifier作为ProviderCode,
CASTc.DisplayOrder与ClientDisplayOrder一样小,
p、 信息评估作为信息评估,
ISNULLCASTCASE当Trust.IsSimpleTrust不为NULL时,则1或0以位结束,0以IsSimpleTrust结束
来自LegalBody lb
a.ID=lb.PrimaryAddressID上的左连接地址a
左连接人p在p.ID上=磅ID
ti.ID=p.TitleID上的左连接标题ti
c.ID=lb.ID上的左连接客户端c
cf1.ID=c.PrivateClientFileID上的左连接客户端文件cf1
左键在co.ID=lb.ID上加入公司co
左连接提供程序prov ON prov.ID=co.ID
Trust.ID=lb.ID上的左加入信任
左侧加入CorporateBenefitProvider cbp on cbp.ID=lb.ID
在ccf.CorporateID=co.ID上左连接CorporateClientFile ccf
cf2.ID=ccf.ID上的左连接客户端文件cf2
在u.PersonID=p.ID上左键加入[User]u
LEFT JOIN[Adviser]ad ON ad.ID=u.ID忽略基于此项的警告似乎没有问题:
select子句上的Convert或cast操作不应影响基数估计器。忽略基于此项的那些警告似乎没有问题:
select子句上的Convert或cast操作不应影响基数估计器。请引用该项。您是否有可靠的索赔来源?忽略基于此项目的警告似乎没有问题?请引用该项目。您是否有可靠的索赔来源?忽略基于此项的警告似乎没有问题?