2

我以前从未听说过覆盖索引,只是偶然发现了它们。我正在阅读他们的这一页,上面写着..

“覆盖索引可以显着加快数据检索速度,但由于额外的键,它本身可能很大,这会减慢数据插入和更新速度。为了减少这种索引大小,一些系统允许将非键字段包含在索引中。非-key 字段本身不是索引排序的一部分,而仅包含在叶级别,从而允许覆盖索引具有较小的整体索引大小。”

所以我的问题是你怎么知道你的系统是否允许非关键字段包含在索引中?

4

1 回答 1

3

MySQL 不(当前)支持非键列。对于其他 DMBS,您需要查看参考手册。

此处已提出并回答了类似的问题。但是,由于使用覆盖索引获得的性能改进对于返回大量行的非选择性查询通常更大,因此我无法设想仅在索引本身中包含额外列的解决方案能够提供性能改进。但是,可能有一些我没有想到的场景,而您的可能就是其中之一,因此在寻找性能改进时,测试、执行计划和 IO 统计信息会告诉您远远超过我的猜想!

于 2012-12-31T12:08:41.420 回答