首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TableCardinality

TableCardinality
EN

Stack Overflow用户
提问于 2010-08-25 22:52:04
回答 4查看 1.3K关注 0票数 2

执行计划中的TableCardinality是什么意思?我正在研究数据库调优性能。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-22 03:48:21

基数是给定表/列的唯一值的数量(因此,与主键索引中的条目数量相等并不奇怪,因为该索引最有可能是聚集的)。索引或表的基数对于sql服务器很有用,因为它允许查询优化器对引用该表时使用的可能的最佳计划进行明智的猜测。

当优化器必须获取您的sql代码并计算出如何处理它时,它将在确定将用于实际检索数据的计划之前考虑替代计划。在大多数现实世界中,可能计划的数量太大,sqlserver无法通过对所有可能计划进行抽样来计算绝对最佳计划,因此优化器将使用统计分析来确定“足够好”的计划。

基数是它用来制定这样一个计划的指标之一,因为它可以用它来挖掘要使用的物理连接(例如,hashmap或循环)

票数 6
EN

Stack Overflow用户

发布于 2010-08-26 01:37:17

From this article

SQL Server会在编译查询计划时跟踪表的基数。它之所以这样做,是因为如果实际基数与编译时基数有很大不同,它将触发自动重新编译。

这似乎是一个合理的猜测,即这就是plan XML中的TableCardinality (并显示在属性窗口中),但我还没有找到任何东西来证实这一点。

票数 1
EN

Stack Overflow用户

发布于 2011-03-22 03:36:18

在执行计划的上下文中,表的基数通常与该表的最新统计数据中的行数相同。

来源:查看http://support.microsoft.com/kb/195565并搜索"table cardinality“-您将看到这样的注释:”注意:在这个最严格的意义上,SQL Server将基数计算为表中的行数。“

此外,我在不同的查询中检查了许多表,在每种情况下,TableCardinality都等于表中的行数,或者在某些情况下,等于该表的主键的sys.sysindexes中的rowcnt值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3567152

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档