Mysql 索引扫描关系的缩减因子

Mysql 索引扫描关系的缩减因子,mysql,sql,Mysql,Sql,假设我有一个关系模式,如下所示 Emp(eid: integer, did: integer, sal: integer, hobby: char(20)) 它有50000不同的记录,一个页面可以容纳100元组(这意味着有500页面) 它在(Emp.did)上有一个大小为50页面的聚集B+树索引 如果我要对EMP进行索引扫描,并计算其成本,我不知道应该使用什么折减系数来计算其成本 它应该是1/50000还是1/50 使用聚集索引涉及两个成本部分: 遍历B-树 按照叶节点列表查找所有匹配的行 I

假设我有一个关系模式,如下所示

Emp(eid: integer, did: integer, sal: integer, hobby: char(20))
它有
50000
不同的记录,一个页面可以容纳
100
元组(这意味着有
500
页面)

它在
(Emp.did)
上有一个大小为
50
页面的聚集
B+
树索引

如果我要对EMP进行索引扫描,并计算其成本,我不知道应该使用什么折减系数来计算其成本


它应该是
1/50000
还是
1/50

使用聚集索引涉及两个成本部分:

  • 遍历B-树
  • 按照叶节点列表查找所有匹配的行
  • IO成本的主要公式是(注意大小写差异:其中#N=索引中的行数,#N=检索到的行数):

  • log(#N)
  • \n/100
  • 而除数100对应于每个块的元组数

    实际数据库的详细计算通常考虑更多因素(最显著的是CPU成本),并且可能还涉及一些其他启发式(例如,表示缓存/命中率、fragentation等)


    有关索引工作原理的详细信息:

    使用聚集索引涉及两个成本部分:

  • 遍历B-树
  • 按照叶节点列表查找所有匹配的行
  • IO成本的主要公式是(注意大小写差异:其中#N=索引中的行数,#N=检索到的行数):

  • log(#N)
  • \n/100
  • 而除数100对应于每个块的元组数

    实际数据库的详细计算通常考虑更多因素(最显著的是CPU成本),并且可能还涉及一些其他启发式(例如,表示缓存/命中率、fragentation等)


    关于索引如何工作的更多信息:

    你所说的“折减系数”是什么意思?我看到的唯一引用是结果集中的元组数与正在处理的数据中的元组数之间的比率。计算成本的公式如下:cost=(NPages(I)+NPages(R))*RFi,我在这里有点迷失了,我是否应该考虑使用1/50000,或者一直在思考,因为它是一个索引扫描,我需要找到别的东西/你的意思是什么?<代码>它有一个聚集的B+树索引(EMP.DID)的**大小的50页**。/代码>什么是“减少因子”?我看到的唯一引用是结果集中的元组数与正在处理的数据中的元组数之间的比率。计算成本的公式如下:cost=(NPages(I)+NPages(R))*RFi,我在这里有点迷失了,我是否应该考虑使用1/50000,或者一直在思考,因为它是一个索引扫描,我需要找到别的东西/你的意思是什么?<代码>它有一个聚集的B+树索引(EMP.DID)的**大小的50页** < /代码>链接不可访问。@ L30N1D45链接固定。抱歉。谢谢,你有一个不错的博客。链接无法访问。@L30n1d45链接已修复。对不起,谢谢,你有一个不错的博客。