小编Dha*_*ghe的帖子

SQL Server LIKE 查询的基数估计

我在名为 AspNetUsers 的表的 LastName 列上创建了非聚集索引的统计直方图向量。

在此输入图像描述

如果我运行查询,因为SELECT * FROM dbo.AspNetUsers WHERE LastName = 'Baker'它返回 6 行作为估计行,因为Baker是步骤之一的RANGE_HI_KEY ,因此 EQ_ROWS 值是我的估计行数。同样,如果我运行查询SELECT * FROM dbo.AspNetUsers WHERE LastName = 'Bacilia',它会返回 1 行作为估计行,导致Bacilia落入“Baker”步长范围,因此该步长的AVG_RAGE_ROWS值是我的估计行数。

同样,根据我的理解,如果我执行查询,因为SELECT * FROM dbo.AspNetUsers WHERE LastName LIKE 'Ba%'它匹配 2 个步骤(BakerBatagoda),所以它应该返回 27 + 51 (RANGE_ROWS) + 6 + 4 (EQ_ROWS) = 88。但它返回 99 行作为估计。

此基数估计如何与 LIKE 查询一起使用?在执行 LIKE 查询时,它是否使用不同的公式来估计行数?

sql-server like cardinality-estimates sql-server-2017

5
推荐指数
1
解决办法
286
查看次数