Jus*_*ant 6 sql-server sql-server-2014 cardinality-estimates
在SQL服务器2014的基数估算白皮书说:
但是,新的 CE 使用更简单的算法,该算法假定大表和小表之间存在一对多连接关联。这假设大表中的每一行都与小表中的一行完全匹配。该算法返回较大输入的估计大小作为连接基数。
但它没有说明 SQL Server 如何确定什么是“大表”和“小表”以进行优化。
这些标准是否记录在任何地方?它是一个简单的阈值(例如“小表”必须低于 10,000 行)、百分比(例如“小表”必须小于“大表”中行的 5%),还是一些更复杂的函数?
此外,是否有跟踪标志或查询提示强制使用此优化进行特定连接?
最后,这个优化是否有一个可以用于进一步谷歌搜索的名称?
我问是因为我希望在主/明细表的连接中使用这种“使用大表的基数”基数估计行为,但是我的“小表”(主)是 1M 行,而我的“大表”(细节)是 22M 行。因此,我正在尝试了解有关此优化的更多信息,以查看是否可以调整我的查询以强制使用它。
白皮书没有为任何示例定义“大”,它使用术语“大”和“小”来帮助解释新 CE 与旧 CE 相比所做的数学计算。
您引用的部分显示了一个包含等式和不等式谓词混合的连接谓词。新的 CE 将查看表的行数并确定哪一个表“大”,并将其用于估计。传统的 CE 不考虑行数,它只会乘以每个谓词的选择性。
华泰