Share via


sys.sysindexes (Transact-SQL)

針對目前資料庫中每個索引和資料表,各包含一個資料列。 這份檢視不支援 XML 索引。 這份檢視並未完整支援資料分割資料表和索引;請改用 sys.indexes 目錄檢視。

重要事項重要事項

此 SQL Server 2000 系統資料表包含回溯相容性的概觀。我們建議您改用目前的 SQL Server 系統檢視表。若要尋找相等的系統檢視或檢視,請參閱<將 SQL Server 2000 系統資料表對應至 SQL Server 2005 系統檢視表>。未來的 Microsoft SQL Server 版本將移除這項功能。請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。

資料行名稱

資料類型

說明

id

int

索引所屬的資料表識別碼。

status

int

系統狀態資訊。

僅供參考之用。不支援。我們無法保證未來的相容性。

first

binary(6)

指向第一個頁面或根頁面的指標。

indid = 0,不會使用。

NULL = 當 indid > 1 時,索引會進行資料分割。

NULL = 當 indid 是 0 或 1 時,資料表會進行資料分割。

indid

smallint

索引的識別碼:

0 = 堆積

1 = 叢集索引

> 1 = 非叢集索引

root

binary(6)

如果 indid >= 1,root 就是指向根頁面的指標。

indid = 0,不會使用。

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 並不完全與舊版相容。 如需詳細資訊,請參閱<備註>。

reserved3

int

傳回 0。

僅供參考之用。不支援。我們無法保證未來的相容性。

reserved4

int

傳回 0。

僅供參考之用。不支援。我們無法保證未來的相容性。

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

name

sysname

索引或統計資料的名稱。 若 indid = 0,則傳回 NULL。 請修改您的應用程式來查閱 NULL 堆積名稱。

statblob

image

統計資料二進位大型物件 (BLOB)。

傳回 NULL。

maxlen

int

僅供參考之用。不支援。我們無法保證未來的相容性。

rows

int

indid = 0 和 indid = 1 為基礎的資料層級資料列計數,indid >1 的這個值會重複。

備註

不應使用定義為已保留的資料行。

如果資料表或索引包含 ROW_OVERFLOW 配置單位的資料,dpagesreservedused 等資料行便不會傳回精確的結果。 另外,每個索引的頁面計數也都會個別追蹤,不會彙總基底資料表這些計數。 若要檢視頁面計數,請使用 sys.allocation_unitssys.partitions 目錄檢視或 sys.dm_db_partition_stats 動態管理檢視。

在 SQL Server 2000 和舊版中,Database Engine 會維護資料列層級的修改計數器。 現在,系統則會在資料行層級維護這些計數器。 因此,會計算 rowmodctr 資料行,且會產生類似舊版結果的結果,但不完全相同。

如果您利用 rowmodctr 中的值來判斷更新統計資料的時間,請考慮下列方案:

  • 不執行任何動作。 新的 rowmodctr 值往往可以協助您判斷何時要更新統計資料,因為行為相當接近舊版的結果。

  • 不使用 AUTO_UPDATE_STATISTICS。 如需詳細資訊,請參閱<統計資料>。

  • 利用時間限制來判斷更新統計資料的時間。 例如,每小時、每日或每週。

  • 利用應用程式層級的資訊來判斷更新統計資料的時間。 例如,每當 identity 資料行最大值變更都超出 10,000 時,或每當執行大量插入作業時。

請參閱

參考

目錄檢視 (Transact-SQL)

將系統資料表對應至系統檢視 (Transact-SQL)

sys.indexes (Transact-SQL)