Cardinality

时间:2023-02-06 21:29:26

Cardinality:
优化器在计算成本的时候,需要从统计信息中取得数据,然后去估计每一步操作所涉及的行数,叫做Cardinality。
比如,一张表T有1000行数据,列COL1上没有直方图,没有空值,并且不重复的值(distinct value)有500个。那么,在使用条件“WHERE COL1=<VALUE>”去访问表的时候,优化器会假设数据均匀分布,它估计出会有1000/500=2行被选出来,2就是这步操作的Cardinality。
通常情况下,Cardinality越准确,生成的执行计划就会越高效。

在模糊查询时where like '%%' 时用Cardinality(t,80),在执行计划中对t表估算行数为80行,降低逻辑读。