SQL Server 表上的索引是否会比表本身消耗更多的磁盘空间?
我已经阅读了几篇文章并研究了这个和一些专家推荐的表分区,例如,这个 MSDN 论坛问题
为什么和索引可以比实际数据更大?
如何减小索引大小?
在这种情况下如何识别不必要的索引?
SQL Server 表上的索引是否会比表本身消耗更多的磁盘空间?
我已经阅读了几篇文章并研究了这个和一些专家推荐的表分区,例如,这个 MSDN 论坛问题
为什么和索引可以比实际数据更大?
如何减小索引大小?
在这种情况下如何识别不必要的索引?
一个完全有效的表设置可能是:
很明显,索引使用的总空间将超过表本身使用的空间。
索引空间总量可能高于表本身使用的总量的原因有很多。立即想到的几个:
如果您在问题中提供表定义以及所有现有索引,在 T-SQL
CREATE TABLE
语句中,我们可能会提出改进建议。理论上,单个非聚集索引也可能大于您的数据大小,因为聚集键包含在非聚集索引中作为指向实际行的指针。
所以假设你有一张这样的桌子
在 a 和 b 上使用聚集索引,然后在 b 和 c 上创建非聚集索引,非聚集索引将包含以下列值
阅读Kalen的这篇文章以获得介绍。
如果您的聚集键不是唯一的,SQL 甚至会在索引中添加一个 4 位唯一标识符。