인덱스(Visual Database Tools)
인덱스를 사용하여 데이터베이스 테이블의 특정 정보에 빨리 액세스할 수 있습니다. 인덱스는 employee 테이블의 성(lname) 열과 같이 데이터베이스 테이블에서 하나 이상의 열 값에 순서를 지정하는 구조입니다. 특정 직원을 성(last name)으로 검색할 때 인덱스를 사용하면 테이블에서 모든 행을 검색하는 경우보다 빠르게 해당 정보를 얻을 수 있습니다.
인덱스는 테이블의 특정 열에 저장된 데이터 값에 포인터를 제공한 다음 사용자가 지정하는 정렬 순서에 따라 해당 포인터의 순서를 지정합니다. 데이터베이스에서는 일반적으로 책에서 인덱스를 사용하는 것처럼 인덱스를 사용하며 특정 값을 찾기 위해 인덱스를 검색한 다음 해당 값을 포함하는 행에 대한 포인터를 따라갑니다.
데이터베이스 다이어그램에서 선택한 테이블에 대한 인덱스/키 대화 상자, XML 인덱스 대화 상자 또는 전체 텍스트 인덱스 대화 상자에서 각 인덱스 형식을 만들거나, 편집하거나, 삭제할 수 있습니다. 인덱스가 첨부된 테이블을 저장하거나 해당 테이블이 나타나는 다이어그램을 저장하면 데이터베이스에 인덱스가 저장됩니다. 자세한 내용은 인덱스 작업을 참조하십시오.
참고
모든 데이터베이스에서 인덱스 작업이 동일한 방식으로 수행되는 것은 아닙니다. 자세한 내용은 데이터베이스 설명서를 참조하십시오.
일반적으로 사용자는 인덱싱된 열의 데이터를 자주 쿼리하는 경우에만 테이블에 인덱스를 만드는 것이 좋습니다. 그 이유는 인덱스가 디스크 공간을 차지하고 행의 추가, 삭제, 업데이트 속도를 느리게 하기 때문입니다. 그렇더라도 대부분의 경우 인덱스를 사용하여 데이터를 검색할 때 필요한 정보를 가져오는 속도는 위의 단점을 충분히 상쇄합니다. 그러나 응용 프로그램에서 데이터를 자주 업데이트하거나 디스크 공간 제약 조건이 있는 경우 인덱스 수를 제한하는 것이 좋습니다.
인덱스를 만들기 전에 사용할 열과 만들 인덱스 형식을 결정해야 합니다.
인덱스 열
데이터베이스 테이블의 단일 열 또는 여러 열을 기반으로 인덱스를 만들 수 있습니다. 여러 열 인덱스를 사용하면 열 하나에 동일한 값이 있는 행을 구별할 수 있습니다.
인덱스는 한 번에 둘 이상의 열을 자주 검색하거나 정렬하는 경우에도 유용합니다. 예를 들어, 동일한 쿼리에서 성과 이름 열에 기준을 자주 설정하는 경우 이 두 열에 여러 열의 인덱스를 만드는 것이 좋습니다.
아래와 같은 방법으로 인덱스의 유용성을 확인할 수 있습니다.
쿼리의 WHERE 절과 JOIN 절을 검사합니다. 두 개의 절 중 하나에 들어 있는 각 열을 인덱스로 처리할 수 있습니다.
새 인덱스를 테스트하여 쿼리 실행 성능에 미치는 효과를 알아봅니다.
테이블에 이미 만들어진 인덱스 수를 고려합니다. 단일 테이블에 인덱스가 너무 많은 것은 좋지 않습니다.
테이블에 이미 만들어진 인덱스 정의를 검사합니다. 공유 열을 포함하는 중첩 인덱스가 없는 것이 좋습니다.
열에서 고유 데이터 값의 수를 검사하여 테이블에 있는 행 수와 비교합니다. 결과에 따라 해당 열이 인덱스로 처리할 수 있는 열인지 및 인덱스로 처리할 수 있는 경우 만들 인덱스 형식을 결정할 수 있습니다.
인덱스 형식
데이터베이스 기능에 따라 데이터베이스 디자이너에서 세 가지 인덱스 형식인 고유 인덱스, 기본 키 인덱스 및 클러스터링된 인덱스를 만들 수 있습니다. 데이터베이스에서 지원하는 인덱싱 기능에 대한 자세한 내용은 데이터베이스 설명서를 참조하십시오.
팁
고유 인덱스는 정보를 검색하는 데 유용하지만 최상의 결과를 얻으려면 기본 키 제약 조건이나 UNIQUE 제약 조건을 사용하는 것이 좋습니다. 이러한 제약 조건에 대한 자세한 내용은 제약 조건 작업을 참조하십시오.
고유 인덱스
고유 인덱스에서 두 행에 동일한 인덱스 값을 가질 수 없습니다.
기존 데이터에 중복 키 값이 있는 경우 대부분의 데이터베이스에서 새로 만든 고유 인덱스가 있는 테이블을 저장할 수 없습니다. 또한 데이터베이스에서 테이블에 중복 키 값을 만드는 새 데이터를 추가할 수 없습니다. 예를 들어, employee 테이블에서 직원의 성(lname)에 고유 인덱스를 만들면 두 명의 직원에게 같은 성을 사용할 수 없습니다.
고유 인덱스에 대한 자세한 내용은 방법: 고유 인덱스 만들기를 참조하십시오.
기본 키 인덱스
데이터베이스 테이블에 테이블의 각 행을 고유하게 식별하는 값을 갖는 열 또는 열 조합이 있는 경우가 종종 있습니다. 이 열을 테이블의 기본 키라고 부릅니다.
데이터베이스 다이어그램에서 테이블의 기본 키를 정의하면 고유 인덱스의 특정 형식인 기본 키 인덱스가 자동으로 만들어집니다. 이 인덱스에서 각 기본 키 값은 고유해야 합니다. 또한 쿼리에서 기본 키 인덱스를 사용하면 데이터에 빠르게 액세스할 수 있습니다. 기본 키에 대한 자세한 내용은 키 작업을 참조하십시오.
클러스터링된 인덱스
클러스터링된 인덱스에서 테이블에 있는 행의 실제 순서는 키 값의 논리적 순서, 즉 인덱싱된 순서와 같습니다. 각 테이블마다 클러스터링된 인덱스를 하나 포함할 수 있습니다.
클러스터링된 인덱스가 아닌 경우 테이블에서 행의 실제 순서는 키 값의 논리적 순서와 일치하지 않습니다. 일반적으로 클러스터링된 인덱스를 사용하면 클러스터링되지 않은 인덱스보다 데이터에 빠르게 액세스할 수 있습니다.
클러스터링된 인덱스를 사용하는 방법에 대한 자세한 내용은 방법: 클러스터링된 인덱스 만들기를 참조하십시오.
전체 텍스트 인덱스
데이터베이스 테이블에서 텍스트 기반 열에 대해 전체 텍스트 검색을 수행하려면 전체 텍스트 인덱스를 만듭니다. 전체 텍스트 인덱스는 일반 인덱스를 기반으로 하므로 먼저 일반 인덱스를 만들어야 합니다. 일반 인덱스는 null이 아닌 단일 열에 대해 작성해야 하며, 값이 큰 열보다 값이 작은 열을 선택하는 것이 좋습니다. 자세한 내용은 방법: 인덱스 만들기를 참조하십시오.
참고
전체 텍스트 인덱스를 만들려면 우선 SQL Server Management Studio나 엔터프라이즈 관리자와 같은 외부 도구를 사용하여 카탈로그를 만들어야 합니다.
참고
Microsoft SQL Server Express 2005에서는 전체 텍스트 인덱스 기능을 사용할 수 없습니다.
XML 인덱스
XML 인덱스 대화 상자를 사용하면 인덱스/키 대화 상자를 통해 인덱싱할 수 없는 XML 데이터 형식의 열에 대한 인덱스를 만들 수 있습니다. 각 XML 열에는 두 개 이상의 XML 인덱스가 있을 수 있지만 작성된 첫 번째 인덱스(기본 인덱스)가 나머지 인덱스의 기반으로 사용되어야 합니다. 기본 XML 인덱스를 삭제하면 다른 인덱스도 함께 삭제됩니다. XML 인덱스에 대한 자세한 내용은 방법: XML 인덱스 만들기를 참조하십시오.