优化覆盖索引的使用

时间:2012-12-31 11:39:40

标签: mysql sql indexing covering-index

我之前从未听说过覆盖索引,只是碰到了它们。我正在阅读它们this page,它说..

“覆盖索引可以极大地加速数据检索,但由于额外的密钥可能会很大,这会减慢数据插入和更新速度。为了减少这样的索引大小,某些系统允许非密钥字段包含在索引中。非关键字段本身不是索引排序的一部分,但仅包含在叶级别,允许覆盖索引的整体索引大小较小。“

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

1 个答案:

答案 0 :(得分:3)

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

A similar question已在此处被要求和回答。然而,由于使用覆盖索引获得的性能改进通常对于返回大量行的非选择性查询而言更大,因此我无法设想在索引本身中仅包括额外列的解决方案,从而提供性能改进。但是,可能有一些我没想到的情况,你的可能就是其中之一,所以在寻找性能改进时,测试,执行计划和IO统计数据总是会告诉你远远超过我的推测!