可以指定在一个文件组中创建索引。这样做具有更好的可管理性与性能,因为可以通过文件组实施不同的备份。如果文件组的文件存在于不同的磁盘阵列上,也会提升查询的I/O性能。
也可以实施索引分区。分区允许你将索引数据集拆分为更小的数据子集。正如将在以下技巧中讨论到的,如果大型索引被分割到不同的分区上,它一定可以提升查询的性能(特别是对于超大型索引来说)。
SQL Server 2008也引入了筛选索引特性和在页级和行级上压缩数据的能力。筛选索引特性允许你为数据子集创建索引和相关统计信息。例如,如果输入的查询只命中列中小部分的值,你可以创建只关注那些普遍值的筛选索引——和完整表索引相比,这样可以减少总的索引的大小,也可以提高底层统计信息的精确性。
新的压缩特性,在企业版和开发版都是可用的,你现在可以为索引或特定分区指定行压缩或页压缩。
如果没有显式地指定,索引会创建在与底层表相同的文件组中。在CREATE INDEX命令中使用ON子句来实现它:
ON filegroup_name I default
这个选项使用显式的文件组名称或数据库默认文件组。
--创建新的文件组
ALTER DATABASE AdventureWorks
ADD FILEGROUP FG2--将新文件添加到数据及新创建的文件组中
ALTER DATABASE AdventureWorks
ADD FILE
(NAME=AW2,FILENAME='J:\test\aw2.ndf',SIZE=1MB
)
TO FILEGROUP FG2--创建新索引,指定它存储在新创建的文件组
CREATE INDEX NI_ProductPhoto_ThumbnailPhotoFileName ON
Production.ProductPhoto (ThumbnailPhotoFileName)
ON[FG2]
文件组可以用来帮助管理超大型数据库,通过文件组一方面可以进行单独的备份,另一方面如果文件组的文件存在于分离的磁盘阵列中时也会提升r/O性能。