当你的内存容量或硬盘空间不足时,也许你不想给一个表增加索引。
对于包含索引的数据库,SQL Sever需要一个可观的额外空间。
例如,要建立一个聚簇索引,需要大约1.2倍于数据大小的空间。
用聚簇索引必须的考虑磁盘空间的问题,至少需要原数据量的120%,而这个空间必须在同一个数据库内。例如:一个数据库中表的数据量是10M,而这个数据库必须还有12M的空间,也就是说整个数据库的空间大小至少是22M。
要看一看一个表的索引在数据库中所占的空间大小,
这两种索引是不是也很容易理解哪?在这里我们的强调:因为聚簇索引影响整个表的排列顺序,索引导致非聚簇索引的失效,因此,创建索引之前,规划好,先创建聚簇索引而后创建非聚簇索引。这也是一个好的习惯。由于非聚簇索引可以在不唯一的列上创建,但是我们不提倡这么做。
你可以使用系统存储过程sp_spaceused,对象名指定为被索引的表名。
非聚簇索引需要大量的硬盘空间和内存。另外,虽然非聚簇索引可以提高从表中取数据的速度,它也会降低向表中插入和更新数据的速度。每当你改变了一个建立了非聚簇索引的表中的数据时,必须同时更新索引。因此你对一个表建立非聚簇索引时要慎重考虑。如果你预计一个表需要频繁地更新数据,那么不要对它建立太多非聚簇索引。另外,如果硬盘和内存空间有限,也应该限制使用非聚簇索引的数量。