【问题标题】:Can someone explain to me the meaning of field SELECTABILITY in relation to Cardinality?有人可以向我解释与基数相关的字段 SELECTABILITY 的含义吗?
【发布时间】:2015-09-04 19:37:01
【问题描述】:

阅读此http://www.programmerinterview.com/index.php/database-sql/cardinality-versus-selectivity/

但仍然没有真正沉入其中。

假设我们有 993 条记录,基数为 13,这意味着 993 条记录中有 13 个唯一/可能的值。它的选择性是 0.0130 或 1.3% 对吧?

现在,1.3% 是什么意思?我所知道的越低越差,选择性越高越好,这意味着更多的唯一值,并且 sql 引擎优化器很高兴。但是,我该如何解释 1.3%?

1.3%??? 当我选择一行时,可变性仅为 13 条可能记录的 1.3%?

抱歉,我已经有 20 多年没有参加统计课程了。

【问题讨论】:

    标签: sql-server indexing database-indexes


    【解决方案1】:

    1.3% 是表中所有行的百分比,但将其视为百分比会令您感到困惑。

    查询表时,您希望尽快找到相关行。数据库必须选择首先搜索哪个索引,并且您希望该索引返回尽可能少的一组行,其中包含相关行。

    假设您正在黄页中寻找吉他修理工 John Smith。有 10,000 个名称,您有 2 个选择:

    • 浏览姓氏索引,所有姓氏都按其第一个字符分组。这为您提供了 26 的基数,选择性 = 0.26%。
    • 浏览吉他维修类别。您所在城市有 500 个业务类别,因此基数 = 500,选择性 = 5%。

    如果选择第一个索引,则必须搜索 S-group,其中平均包含 10,000 / 26 = 384.6 个名称。

    如果您选择第二个索引,则必须搜索 Guitar Repairers,其中平均包含 10,000 / 500 = 20 个名称。

    显然,业务类别是比姓氏更好的索引,因为您可以更快地缩小搜索范围。这就是选择性的全部含义:您可以尽快找到所需的行。

    【讨论】:

    • 我明白了,我现在明白了。谢谢佐夫
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2015-03-30
    • 2021-10-14
    相关资源
    最近更新 更多