【发布时间】:2011-02-05 12:47:01
【问题描述】:
假设您有一个 MySQL 5.0 MyISAM 表,其中包含 1 亿行,两个整数列上有一个索引(主键除外)。
从我对 B-tree 结构的理解来看,我认为 较低 基数意味着索引的存储效率更好,因为父节点较少。而 更高 基数意味着存储效率较低,但 读取 性能更快,因为它必须通过更少的分支导航以获取它正在寻找的任何数据以缩小行用于查询。
(注意 - “低”与“高”,我的意思不是例如 100 万与 9900 万对于 1 亿行表。我的意思更像是 9000 万与 9500 万)
我的理解正确吗?
相关问题 - 基数如何影响写入性能?
【问题讨论】:
-
我不确定您所说的“基数”是什么意思。你的意思是b-tree(实际上可能是b+-tree)结构使用的块大小吗?
-
基数,如唯一值的数量。更高的基数 = 更多的独特价值。
-
例如,我发现有一篇文章说基数越高,读取性能越好。但是我能找到的文章并不多,而且这只是一些随机的博客,所以我真的不知道。 databasedesign-resource.com/mysql-tuning.html
-
同样在那篇文章中,对高基数列的索引的建议是 1 列索引。我的问题是多列索引,这可能对幕后发生的事情有不同的影响。
标签: mysql indexing performance cardinality