tsql返回索引的数据文件

时间:2012-10-16 17:07:07

标签: sql sql-server sql-server-2005

我在SQL Server 2005中为数据库的主文件组提供了3个数据文件。是否可以确定特定索引所在的数据文件,或者它们是否存在于文件组中的多个数据文件中?

2 个答案:

答案 0 :(得分:2)

select  object_name(i.id) as TableName
,       i.name as IndexName
,       fg.name as FilegroupName
,       df.name as FileName
,       df.physical_name as FilePhysicalName
from    sys.sysindexes i
join    sys.filegroups fg
on      fg.data_space_id = i.groupid
join    sys.database_files df
on      df.data_space_id = fg.data_space_id
join    sys.data_spaces ds
on      ds.data_space_id = fg.data_space_id
where   objectproperty(i.id,'IsUserTable') = 1

答案 1 :(得分:0)

tabke和索引等对象构建在文件组上,而不是文件上。索引wiLl最有可能驻留在文件组中的所有文件中。有一些例外情况并非如此,例如是否添加了更多文件,导致文件分配热点等,但SQL Server对文件使用比例填充算法,并均匀填充。

您可以通过运行

查看
DBCC IND('myDatabase','myTable',2)

其中2是您感兴趣的索引的indexID。

这将显示每个页面的fileID