有人可以向我解释与基数相关的字段 SELECTABILITY 的含义吗?
Can someone explain to me the meaning of field SELECTABILITY in relation to Cardinality?
阅读这个http://www.programmerinterview.com/index.php/database-sql/cardinality-versus-selectivity/
但还是没有真正融入其中。
假设我们有 993 条记录,基数为 13,这意味着 993 条记录中有 13 个唯一/可能的值。它的select能力是 0.0130 或 1.3%,对吗?
现在,1.3% 是什么意思?我所知道的越低越好,select 能力越高越好,这意味着更多的独特价值,sql 引擎优化器很高兴。但是,我该如何解释 1.3%?
1.3% 的???
当我 select 一行时,可变性仅为 13 条可能记录的 1.3%?
抱歉,我已经有 20 多年没有统计了 类。
1.3% 是 table 中所有行的百分比,但您将其视为百分比会混淆自己。
当您查询 table 时,您希望尽快找到相关行。数据库必须选择首先搜索哪个索引,并且您希望此索引 return 尽可能小的一组行,其中包含相关行。
想象一下,您正在黄页上寻找吉他修理工 John Smith。有 10,000 个名字,你有 2 个选择:
- 浏览姓氏索引,其中所有姓氏均按其第一个字符分组。这为您提供了 26 的基数,选择性 = 0.26%。
- 浏览吉他维修类别。您的城市中有 500 个业务类别,因此基数 = 500,选择性 = 5%。
如果选择第一个索引,则必须搜索 S-group,其中平均包含 10,000 / 26 = 384.6 个名称。
如果您选择第二个索引,您将不得不搜索 Guitar Repairers,其中平均包含 10,000 / 500 = 20 个名称。
显然,商业类别是比姓氏更好的索引,因为您可以更快地缩小搜索范围。这就是选择性的全部含义:您可以尽快到达所需的行。
阅读这个http://www.programmerinterview.com/index.php/database-sql/cardinality-versus-selectivity/
但还是没有真正融入其中。
假设我们有 993 条记录,基数为 13,这意味着 993 条记录中有 13 个唯一/可能的值。它的select能力是 0.0130 或 1.3%,对吗?
现在,1.3% 是什么意思?我所知道的越低越好,select 能力越高越好,这意味着更多的独特价值,sql 引擎优化器很高兴。但是,我该如何解释 1.3%?
1.3% 的??? 当我 select 一行时,可变性仅为 13 条可能记录的 1.3%?
抱歉,我已经有 20 多年没有统计了 类。
1.3% 是 table 中所有行的百分比,但您将其视为百分比会混淆自己。
当您查询 table 时,您希望尽快找到相关行。数据库必须选择首先搜索哪个索引,并且您希望此索引 return 尽可能小的一组行,其中包含相关行。
想象一下,您正在黄页上寻找吉他修理工 John Smith。有 10,000 个名字,你有 2 个选择:
- 浏览姓氏索引,其中所有姓氏均按其第一个字符分组。这为您提供了 26 的基数,选择性 = 0.26%。
- 浏览吉他维修类别。您的城市中有 500 个业务类别,因此基数 = 500,选择性 = 5%。
如果选择第一个索引,则必须搜索 S-group,其中平均包含 10,000 / 26 = 384.6 个名称。
如果您选择第二个索引,您将不得不搜索 Guitar Repairers,其中平均包含 10,000 / 500 = 20 个名称。
显然,商业类别是比姓氏更好的索引,因为您可以更快地缩小搜索范围。这就是选择性的全部含义:您可以尽快到达所需的行。