클러스터 된 인덱스은 (예 : 특정 정도까지) 테이블의 물리적 구조를 정의합니다. 그것은 어떤 순서로 데이터가 정렬되는지를 정의합니다. 적어도 대부분의 국가에서 (성, 이름)에 의해 "클러스터"된 전화 번호부를 생각해보십시오.
테이블 당 하나의 클러스터 된 인덱스 만 제공되므로 현명하게 선택하십시오! Queen of Indexing, Kimberly Tripp의 복음에 따르면, 클러스터링 키는 좁고 안정적이어야하며 (변경되지 않음) 고유해야하고 (예!) 이상적으로 증가해야합니다.
클러스터링 키는 각 클러스터되지 않은 색인의 모든 항목에 추가되므로 좁아야합니다. 결국 클러스터링 키는 궁극적으로 실제 데이터를 찾는 데 사용되는 값입니다.
많은 인덱스 값을 지속적으로 업데이트하는 것은 비용이 많이 드는 일입니다. 특히 클러스터링되지 않은 인덱스에서 클러스터링 키를 업데이트해야하므로 안정적이어야합니다.
다시 말해서 실제 데이터를 찾는 데 사용되는 값이기 때문에 고유해야합니다. 고유 한 것으로 보장되지 않는 열을 선택하면 SQL Server는 클러스터링 키에 4 바이트 값을 추가하여 클러스터 키를 "고유하게"만듭니다. 이는 좋지 않습니다.
이상적으로 클러스터링 키는 페이지와 인덱스 조각화가 가장 적어 성능면에서 최상이기 때문에 계속 증가해야합니다.
클러스터링 키의 이상적인 후보는 INT (또는 BIGINT) IDENTITY입니다. 모든 요구 사항을 이상적으로 충족시킵니다.
클러스터되지 않은 색인은 - 현명하게 사용하고 선택하십시오! 내가 줄 수있는 일반적인 규칙은 하나뿐입니다. 다른 테이블을 참조하는 외래 키의 일부인 모든 열은 인덱스에 있어야합니다. (SQL Server는 널리 알려진 신념과 많은 신화와는 달리) 그러한 인덱스를 제자리에 두지 않습니다 자동적으로 - 절대로 없었습니다.
다른 것 - 시스템을 감시하고 어떤 종류의 쿼리가 있는지 확인해야합니다. WHERE 또는 SORT 절에 나타나는 모든 열은 잠재적 인 후보가 될 수 있지만 인덱스가 너무 많으면 좋지 않습니다. 어느 쪽이든 ....당신이 또는 클러스터 된 인덱스를해서는 안 경우
질문 2 개를 추가했습니다. –