更新:
2005 年 12 月 5 日
針對目前資料庫中每個索引和資料表,各包含一個資料列。這份檢視不支援 XML 索引。這份檢視並未完整支援資料分割資料表和索引;請改用 sys.indexes 目錄檢視。
|
資料行名稱
|
資料類型
|
描述
|
|---|
|
id
|
int
|
索引所屬的資料表識別碼。
|
|
status
|
int
|
內部系統狀態資訊。
|
|
first
|
binary(6)
|
指向第一個頁面或根頁面的指標。
在 SQL Server 6.5 版和更早的版本中,sysindexes.first 一律會指向堆積的開頭、索引分葉層級的開頭,或 text 和 image 頁面鏈結的開頭。
在 SQL Server 7.0 版和更新的版本中,當 indid = 0 時,不會使用 sysindexes.first。
NULL = 當 indid > 1 時,索引會進行資料分割。
NULL = 當 indid 是 0 或 1 時,資料表會進行資料分割。
|
|
indid
|
smallint
|
索引的識別碼:
0 = 堆積
1 = 叢集索引
> 1 = 非叢集索引
|
|
root
|
binary(6)
|
如果 indid >= 1,root 就是指向根頁面的指標。
在 SQL Server 6.5 版和更早的版本中,當 indid = 0 時,sysindexes.root 會指向堆積中的最後一頁。
在 SQL Server 7.0 版和更新的版本中,當 indid = 0 時,不會使用 sysindexes.root。
NULL = 當 indid > 1 時,索引會進行資料分割。
NULL = 當 indid 是 0 或 1 時,資料表會進行資料分割。
|
|
minlen
|
smallint
|
資料列的大小下限
|
|
keycnt
|
smallint
|
索引鍵數目
|
|
groupid
|
smallint
|
建立物件的檔案群組識別碼。
NULL = 當 indid > 1 時,索引會進行資料分割。
NULL = 當 indid 是 0 或 1 時,資料表會進行資料分割。
|
|
dpages
|
int
|
如果 indid = 0 或 indid = 1,dpages 就是所用的資料頁面計數。
如果 indid > 1,dpages 是所用的索引頁面計數。
0 = 當 indid > 1 時,索引會進行資料分割。
0 = 當 indid 是 0 或 1 時,資料表會進行資料分割。
如果發生資料列溢位,便不產生精確的結果。
|
|
reserved
|
int
|
如果 indid = 0 或 indid = 1,reserved 就是所有索引和資料表資料所配置的頁面計數。
如果 indid > 1,reserved 就是索引所配置的頁面計數。
0 = 當 indid > 1 時,索引會進行資料分割。
0 = 當 indid 是 0 或 1 時,資料表會進行資料分割。
如果發生資料列溢位,便不產生精確的結果。
|
|
used
|
int
|
如果 indid = 0 或 indid = 1,used 就是所有索引和資料表資料所用的總頁數。
如果 indid > 1,used 就是索引所用的頁面計數。
0 = 當 indid > 1 時,索引會進行資料分割。
0 = 當 indid 是 0 或 1 時,資料表會進行資料分割。
如果發生資料列溢位,便不產生精確的結果。
|
|
rowcnt
|
bigint
|
以 indid = 0 和 indid = 1 為基礎的資料層級資料列計數。
0 = 當 indid > 1 時,索引會進行資料分割。
0 = 當 indid 是 0 或 1 時,資料表會進行資料分割。
|
|
rowmodctr
|
int
|
計算前次更新資料表的統計資料之後,插入、刪除或更新資料列的總數。
0 = 當 indid > 1 時,索引會進行資料分割。
0 = 當 indid 是 0 或 1 時,資料表會進行資料分割。
在 SQL Server 2005 中,rowmodctr 並不完全與舊版相容。如需詳細資訊,請參閱<備註>一節。
|
|
xmaxlen
|
smallint
|
資料列的大小上限
|
|
maxirow
|
smallint
|
非分葉索引資料列的大小上限。
在 SQL Server 2005 中,maxirow 並不完全與舊版相容。
|
|
OrigFillFactor
|
tinyint
|
當建立索引時,所用的原始填滿因數值。這個值並沒有維護;不過,如果您必須重建索引,且忘了所用的填滿因數值,它可能很有用。
|
|
StatVersion
|
tinyint
|
警告僅做為識別目的。不支援。我們無法保證未來的相容性。
傳回 0。
|
|
reserved2
|
int
|
警告僅做為識別目的。不支援。我們無法保證未來的相容性。
傳回 0。
|
|
FirstIAM
|
binary(6)
|
警告僅做為識別目的。不支援。我們無法保證未來的相容性。
NULL = 索引進行資料分割。
|
|
impid
|
smallint
|
警告僅做為識別目的。不支援。我們無法保證未來的相容性。 索引實作旗標。
傳回 0。
|
|
lockflags
|
smallint
|
用來約束所考量的索引鎖定資料粒度。例如,若要將鎖定成本降到最低,您可以將基本上是唯讀的參考表設為只執行資料表層級的鎖定。
|
|
pgmodctr
|
int
|
警告僅做為識別目的。不支援。我們無法保證未來的相容性。
傳回 0。
|
|
keys
|
varbinary(816)
|
組成索引鍵的各個資料行之資料行識別碼清單。
傳回 NULL。
若要顯示索引鍵資料行,請使用 sys.sysindexkeys (Transact-SQL)。
|
|
name
|
sysname
|
索引或統計資料的名稱。當 indid = 0 時,會傳回 NULL。請修改您的應用程式來查閱 NULL 堆積名稱。
|
|
statblob
|
image
|
統計資料二進位大型物件 (BLOB)。
傳回 NULL。
|
|
maxlen
|
int
|
警告僅做為識別目的。不支援。我們無法保證未來的相容性。
|
|
rows
|
int
|
以 indid = 0 和 indid = 1 為基礎的資料層級資料列計數,indid >1 的這個值會重複。
|
不應使用定義為已保留的資料行。
在舊版 SQL Server 中,每份至少有一個 text、ntext 或 image 資料行的資料表,在 indid = 255 的 sysindexes 中,也都有一個資料列。在 SQL Server 2005 中,這個索引識別碼已不存在。當資料表或索引有一或多個大型物件 (LOB) 資料類型時,會配置每個資料分割各一個 LOB_DATA 配置單位來管理這個資料的儲存體。如需詳細資訊,請參閱<資料表與索引組織>。
如果資料表或索引包含 ROW_OVERFLOW 配置單位的資料,dpages、reserved 和 used 等資料行便不會傳回精確的結果。另外,每個索引的頁面計數也都會個別追蹤,不會彙總基底資料表這些計數。若要檢視頁面計數,請使用 sys.allocation_units 或 sys.partitions 目錄檢視或 sys.dm_db_partition_stats 動態管理檢視。
在舊版的 SQL Server 中,Database Engine 會維護資料列層級的修改計數器。在 SQL Server 2005 中,會在資料行層級維護這些計數器。因此,會計算 rowmodctr 資料行,且會產生類似舊版結果的結果,但不完全相同。
如果您利用 rowmodctr 中的值來判斷更新統計資料的時間,請考慮下列方案:
-
不執行任何動作。新的 rowmodctr 值往往可以協助您判斷何時要更新統計資料,因為行為相當接近舊版的結果。
-
不使用 AUTO_UPDATE_STATISTICS。如需詳細資訊,請參閱<索引統計資料>。
-
利用時間限制來判斷更新統計資料的時間。例如,每小時、每日或每週。
-
利用應用程式層級的資訊來判斷更新統計資料的時間。例如,每當 identity 資料行最大值變更都超出 10,000 時,或每當執行大量插入作業時。
參考
目錄檢視 (Transact-SQL)
將 SQL Server 2000 系統資料表對應至 SQL Server 2005 系統檢視
sys.indexes (Transact-SQL)
說明及資訊
取得 SQL Server 2005 協助
|
版本
|
歷程記錄
|
|---|
|
2005 年 12 月 5 日
|
-
變更的內容:
-
-
將 dpages、reserved、used、rowcnt 和 rowmodctr 等資料行中資料分割資料表和索引的傳回值從 NULL 改成 0。
-
更正 FirstIAM 資料行中傳回的結果。
|