sys.sysindexes(Transact-SQL)

업데이트: 2005년 12월 5일

현재 데이터베이스 내의 각 인덱스 및 테이블마다 한 행을 포함합니다. XML 인덱스는 이 뷰에서 지원되지 않습니다. 분할된 테이블 및 인덱스는 이 뷰에서 완전하게 지원되지 않으므로 대신 sys.indexes 카탈로그 뷰를 사용하십시오.

ms190283.note(ko-kr,SQL.90).gif중요:
이 SQL Server 2000 시스템 테이블은 이전 버전과의 호환성을 위해 뷰로 포함됩니다. 대신 현재 SQL Server 시스템 뷰를 사용하는 것이 좋습니다. 동급 시스템 뷰를 찾으려면 SQL Server 2000 시스템 테이블을 SQL Server 2005 시스템 뷰로 매핑을 참조하십시오. Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오.
열 이름 데이터 형식 설명

id

int

인덱스가 속한 테이블의 ID입니다.

status

int

내부 시스템 상태에 관한 정보입니다.

first

binary(6)

첫 페이지 또는 루트 페이지에 대한 포인터입니다.

SQL Server 6.5 이전 버전에서 sysindexes.first는 항상 힙의 시작, 인덱스 리프 수준의 시작 또는 textimage 페이지 체인의 시작을 가리킵니다.

SQL Server 7.0 이후 버전에서 sysindexes.firstindid = 0일 때 사용되지 않습니다.

NULL = indid가 1보다 큰 경우 인덱스가 분할됩니다.

NULL = indid가 0 또는 1일 때 테이블이 분할됩니다.

indid

smallint

인덱스의 ID입니다.

0 = 힙

1 = 클러스터형 인덱스

>1 = 비클러스터형 인덱스

root

binary(6)

indid >= 1인 경우 root는 루트 페이지에 대한 포인터입니다.

SQL Server 6.5 이전 버전에서 sysindexes.rootindid = 0일 때 힙의 마지막 페이지를 가리킵니다.

SQL Server 7.0 이후 버전에서 sysindexes.rootindid = 0일 때 사용되지 않습니다.

NULL = indid가 1보다 큰 경우 인덱스가 분할됩니다.

NULL = indid가 0 또는 1일 때 테이블이 분할됩니다.

minlen

smallint

행의 최대 크기입니다.

keycnt

smallint

키 수입니다.

groupid

smallint

개체가 만들어진 파일 그룹의 ID입니다.

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)

인덱스 키를 구성하는 열의 열 ID 목록입니다.

NULL을 반환합니다.

인덱스 키 열을 표시하려면 sys.sysindexkeys(Transact-SQL)를 사용하십시오.

name

sysname

인덱스 또는 통계의 이름입니다. indid = 0일 때 NULL을 반환합니다. 응용 프로그램을 수정하여 NULL 힙 이름을 찾습니다.

statblob

image

통계 BLOB(Binary Large Object)입니다.

NULL을 반환합니다.

maxlen

int

정보 제공용으로만 식별됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.

rows

int

indid = 0 및 indid = 1을 기준으로 하는 데이터 수준 행 개수이며 indid가 1보다 작은 경우에 값이 반복됩니다.

주의

예약된 것으로 정의된 열은 사용할 수 없습니다.

SQL Server의 이전 버전에서 최소한 한 개의 text, ntext 또는 image 열이 있는 각 테이블은 indid = 255인 경우에 sysindexes에도 행이 하나 있습니다. SQL Server 2005에서 이 인덱스 ID는 더 이상 존재하지 않습니다. 테이블 또는 인덱스에 한 개 이상의 LOB(Large Object) 데이터 형식이 있는 경우 파티션당 한 개의 LOB_DATA 할당 단위가 할당되어 해당 데이터의 저장소를 관리합니다. 자세한 내용은 테이블 및 인덱스 구성을 참조하십시오.

dpages, reservedused 열은 테이블 또는 인덱스에 ROW_OVERFLOW 할당 단위의 데이터가 포함된 경우에 정확한 결과를 반환하지 않습니다. 또한 각 인덱스에 대한 페이지 수는 개별적으로 추적되고 기본 테이블에서 집계되지 않습니다. 페이지 수를 확인하려면 sys.allocation_units 카탈로그 뷰나 sys.partitions 카탈로그 뷰 또는 sys.dm_db_partition_stats 동적 관리 뷰를 사용하십시오.

이전 버전의 SQL Server에서 데이터베이스 엔진은 행 수준의 수정 카운터를 유지 관리했습니다. 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, rowcntrowmodctr 열의 분할된 테이블 및 인덱스에 대한 반환 값을 NULL에서 0으로 변경했습니다.
  • FirstIAM 열에 반환되는 결과를 수정했습니다.