Computer >> 컴퓨터 >  >> 프로그램 작성 >> SQL Server

SQL Server의 인덱스

이 문서에서는 SQL Server에서 인덱스를 생성, 이름 변경 및 삭제하는 방법을 설명합니다.

색인이란 무엇입니까 - SQL Server의 색인은 무엇입니까?

인덱싱은 레코드를 더 빠르게 검색하는 데 사용되는 방법입니다. 인덱스는 인덱스된 열에 나타나는 각 값을 가리킵니다.

색인 만들기

구문

  CREATE [UNIQUE  ] [ CLUSTERED | NONCLUSTERED ] INDEX ten_chimuc  ] [ CLUSTERED | NONCLUSTERED ] INDEX ten_chimuc 
ON ten_bang ( cot1 [ASC | DESC ], . cot_n [ ASC | DESC ] )
[ INCLUDE ( cot1, . cot_n ) ]
[ WHERE dieu_kien ]
[ WITH ( PAD_INDEX = { ON | OFF }
| FILLFACTOR = fillfactor
| SORT_IN_TEMPDB = { ON | OFF }
| IGNORE_DUP_KEY = { ON | OFF }
| STATISTICS_NORECOMPUTE = { ON | OFF }
| STATISTICS_INCREMENTAL = { ON | OFF }
| DROP_EXISTING = { ON | OFF }
| ONLINE = { ON | OFF }
| ALLOW_ROW_LOCKS = { ON | OFF }
| ALLOW_PAGE_LOCKS = { ON | OFF }
| MAXDOP = so_toida
| DATA_COMPRESSION = { NONE | PAGE | ROW }
[ ON PARTITIONS ( { so | khoang } ]
[ ON scheme_phandoan ( cot )
| ON fnhomtaptin | ON nhomtaptin_macdinh ]
[ FILESTR EAM_ON {nhomtaptin | scheme_phandoan }; scheme_phandoan};

고유

선택적으로 인덱스 열의 값 조합이 고유해야 함을 나타냅니다.

클러스터형

선택적으로 테이블 행의 물리적 배열을 결정하는 논리적 순서(예:인덱스의 필드별로 정렬된 테이블의 레코드 순서)를 지정합니다.

클러스터 없음

선택적으로 테이블 행의 물리적 배열을 결정하지 않는 논리적 순서를 나타냅니다.

ten_chimuc

만들고자 하는 인덱스의 이름

ten_bang

인덱스가 생성되는 테이블 또는 뷰의 이름입니다.

cot1, . 유아용 침대

인덱스를 생성하는 열입니다.

ASC | DESC

열에 있는 값의 정렬 순서

포함(cot1, . cot_n)

선택적으로 해당 열은 비클러스터형 인덱스의 잎이 많은 수준에 추가할 기본 열이 아닙니다.

dieu_kien 위치

선택 사항, 인덱스에 포함할 행을 결정하는 조건입니다.

ON scheme_phanvung(유아용 침대)

선택적으로 파티션이 매핑되는 파일 그룹(파일 그룹)을 결정하는 파티션 공간을 표시합니다.

nhomtaptin 사용

선택적으로 지정된 파일 그룹에 색인을 생성할지 여부를 지정합니다.

nhomtaptin_macdinh 켜기

선택 사항, 기본 파일 그룹을 나타냅니다.

FILESTREAM_ON {nhomtaptin | khongigna_phanvung } khongigna_phanvung}

선택적으로 클러스터형 인덱스에 대한 FILESTREAM 데이터의 위치를 ​​나타냅니다.

SQL Server의 인덱스 예

  CREATE IND EX danhba_chimuc 
ON danhba (h o);

이 예에서 우리는 목록에 danhba_chimuc라는 색인을 생성하고 기침이라는 필드를 포함합니다. 아래 예시와 같이 2개 이상의 필드 인덱스를 생성할 수 있습니다.

  C REATE INDEX danhba_chimuc 
ON da (cough, ten);

이 예는 두 개의 필드, 기침 및 10을 포함하여 이름 목록에 namesba_chimuc 목록을 생성합니다. 각 항목에 대해 ASC 또는 DESC가 지정되지 않았으므로 기본 순서에서 각 필드로 생성된 인덱스는 증분입니다. 내림차순으로 원하시면 다음과 같이 하시면 됩니다.

  CREATE INDEX list name 
ON danhba (ho DESC, te n DESC);

위의 CREATE INDEX 명령은 이름과 성을 내림차순으로 정렬하여 사용자 이름과 _chimuc만 만듭니다.

고유 색인의 예

  CREATE UNIQUE IN DEX danhba_chimucduynhat 
ON danhba (ho, ten);

이 예는 이름과 성을 포함하는 이름 목록에 danh_chimuc라는 색인을 만들고 이 두 필드의 조합이 고유하도록 합니다. Clustered의 고유 인덱스를 생성하여 테이블에 있는 행의 물리적 순서가 인덱스의 논리적 순서에 따라 결정되도록 할 수 있습니다.

  CREAT E UNIQUE CLUSTERED INDEX danhba_chimucduynhat 
ON danh three (ho, ten);

이 예에서 새로 생성된 인덱스는 danhba_chimucduynhat이라는 이름이 2개의 이름 필드와 성 필드로 구성되며 이에 따라 테이블의 행 정렬 순서도 변경됩니다.

SQL Server에서 인덱스 이름 바꾸기

구문

  sp_rename 'tenbang.ten_chi_muc_cu', 'ten_chimuc_moi', 'INDEX'; 

ten_bang

인덱스가 생성되는 테이블의 이름입니다.

ten_chimuc_cu

이름을 바꾸려는 색인의 이름입니다.

ten_chimuc_moi

색인의 새 이름입니다.

예:

  sp_rename 'danhba.danhba_chimuc', 'danhba_chimuc_ten', 'INDEX'; 

이 예는 danhba_chimuc에서 listba_chimuc_ten으로 namba 테이블의 인덱스 이름을 바꿉니다.

SQL Server에서 인덱스 삭제

구문

  DROP INDEX tenbang.ten_chimuc; 

ten_bang

인덱스가 생성되는 테이블의 이름입니다.

ten_chimuc_cu

삭제할 색인의 이름입니다.

예:

  DROP INDEX danhba.danhba_chimuc; 

이 예는 ba_chimuc라는 색인을 삭제합니다.