sat*_*y78 1 mysql database-performance database-indexes
我有一个小问题:主索引和二级索引的性能有什么区别?是什么导致了这种差异?
我在谷歌搜索,我已经看到二级索引存储在另一个表中,所以这会减慢所有操作..但是还有其他一些原因可以证明这种性能下降是合理的吗?
非常感谢
聚簇表是没有“堆”部分的 B 树 - 行直接存储在聚簇索引(主键)的 B 树结构中。B-Tree 的节点可以拆分或合并,所以物理位置或行可以改变,所以我们不能有一个从二级索引到行的简单“指针”,所以二级索引必须包含一个完整的副本能够可靠地识别行的主索引字段。
这适用于 Oracle、MS SQL Server,也适用于 InnoDB。
这意味着聚簇表中的二级索引比基于堆的表中的二级索引“更胖”,后者:
让我引用使用索引,卢克!:“索引组织表和聚簇索引的优点大多限于不需要第二个索引的表。”
这很遗憾,因为 MySQL 不允许您独立于存储引擎选择集群。