인덱스 개요
페이지 정보
작성자 서방님 댓글 0건 조회 155회 작성일 06-09-13 11:20본문
인덱스(index)
데이터베이스의 인덱스는 책의 인덱스와 비슷합니다. 책에서 인덱스를 사용하면 책을 다 읽지 않고도 특정 내용을 빠르게 찾을 수 있습니다. 데이터베이스에서 인덱스를 사용하면 데이터베이스 프로그램이 전체 테이블을 스캔하지 않고도 데이터를 찾을 수 있습니다.
책의 인덱스는 단어와 각 단어가 들어 있는 페이지의 번호로 구성됩니다. 데이터베이스의 인덱스는 테이블의 값과 각 값이 있는 테이블 행의 저장소 위치로 구성됩니다. 인덱스는 테이블의 한 열 또는 여러 열에서 만들 수 있으며 B 트리 형태로 구현됩니다. 인덱스의 각 항목은 테이블의 각 행에 있는 하나 이상의 열(검색 키)로 구성됩니다. B 트리는 검색 키로 정렬되며 검색 키의 선행 하위 집합에서 효율적으로 검색될 수 있습니다. 예를 들어, A, B, C 열의 인덱스는 A에서, A, B에서 또는 A, B, C에서 효율적으로 검색될 수 있습니다.
대부분의 책에는 단어, 이름, 장소 등에 대해 일반적인 하나의 색인이 있습니다. 데이터베이스에는 데이터의 선택한 유형 또는 열에 대한 개별적인 행이 있습니다. 이것은 책에서 사람 이름에 대한 하나의 인덱스와 장소에 대한 또 다른 인덱스를 사용하는 것과 같습니다. 데이터베이스를 만들고 성능을 향상시키기 위해 조정하려면 데이터를 찾는 쿼리에서 사용되는 열에 대해 인덱스를 만들어야 합니다.
SQL Server는 PRIMARY KEY 및 UNIQUE 제약 조건과 같은 특정 유형의 제약 조건에 대해 자동으로 인덱스를 만듭니다. 사용자가 제약 조건과 관계 없는 인덱스를 만들어 테이블 정의를 할 수도 있습니다.
그런데 인덱스를 사용하면 성능은 향상되지만 비용이 더 들 수 있습니다. 인덱스가 있는 테이블은 저장 공간이 더 필요합니다. 또한 데이터를 삽입, 업데이트 또는 삭제하는 명령어를 수행할 때 시간이 더 걸릴 수 있고 인덱스를 유지 관리하기 위한 처리 시간이 더 필요합니다. 인덱스를 디자인하고 만들 때는 성능 향상의 이점이 저장 공간과 리소스 처리에 드는 비용보다 크도록 해야 합니다.
인덱스를 사용하면 데이터베이스 테이블의 특정 정보에 빨리 액세스할 수 있습니다. 인덱스는 employee 테이블의 성(lname) 열처럼 데이터베이스 테이블에서 하나 이상의 열 값을 배열하는 구조입니다. 어떤 직원을 성(last name)으로 검색할 경우 인덱스를 사용하면 테이블에서 모든 행을 검색하는 경우보다 빠르게 해당 정보를 얻을 수 있습니다.
인덱스는 테이블의 특정 열에 저장된 데이터 값에 포인터를 제공한 다음 사용자가 지정하는 정렬 순서에 따라 포인터를 배열합니다. 데이터베이스는 우리가 책에서 인덱스를 사용하는 것처럼 인덱스를 사용합니다. 즉, 데이터베이스는 인덱스를 검색하여 특정 값을 찾아낸 다음 해당 값이 들어있는 행까지 포인터를 따라갑니다.
데이터베이스 다이어그램에서는 선택한 테이블의 인덱스/키 속성 페이지에서 각각의 인덱스 유형을 만들거나, 편집 또는 삭제할 수 있습니다. 인덱스가 첨부된 테이블을 저장하거나 해당 테이블이 나타나는 다이어그램을 저장하면 데이터베이스에 인덱스가 저장됩니다. 자세한 내용은 인덱스 만들기를 참조하십시오.
일반적으로 사용자는 인덱스 처리된 열의 데이터를 자주 쿼리할 경우에만 테이블에 인덱스를 만들어야 합니다. 인덱스는 디스크 공간을 차지하고 행의 추가, 삭제, 업데이트 속도를 느리게 하기 때문입니다. 그러나 대부분의 경우 인덱스를 사용하여 데이터를 검색할 때 얻는 속도에 대한 효과는 이러한 단점을 상쇄하고도 남습니다. 그러나 응용 프로그램에서 데이터를 자주 업데이트하거나 디스크 공간 제약 조건을 가지고 있는 경우에는 인덱스 수를 제한할 필요가 있습니다.
인덱스 열
인덱스를 작성하기 전에 사용할 열과 만들 인덱스 유형을 결정해야 합니다. 데이터베이스 테이블의 단일 열이나 여러 열을 기본으로 인덱스를 만들 수 있습니다. 다중 열 인덱스를 사용하면 열 하나에 동일한 값이 있을 수 있는 행을 구별할 수 있습니다.
인덱스는 한번에 둘 이상의 열을 검색 또는 정렬할 경우가 많을 때에도 도움이 됩니다. 예를 들어, 동일한 쿼리에서 성과 이름 열에 조건을 설정할 일이 많은 경우 이 두 열에 다중 열 인덱스를 만드는 것이 좋습니다.
아래와 같은 방법으로 인덱스의 유용성을 결정할 수 있습니다.
- 쿼리의 WHERE 절과 JOIN 절을 확인합니다. 이들 두 절 중 하나에 들어 있는 각 열이 인덱스 처리할 수 있는 후보입니다.
- 새 인덱스를 실험하여 쿼리 실행 성능에 미치는 효과를 알아봅니다.
- 테이블에 이미 만들어진 인덱스 수를 고려합니다. 단일 테이블에 인덱스가 너무 많은 것은 좋지 않습니다.
- 테이블에 이미 만들어진 인덱스 정의를 조사합니다. 공유 열을 포함하는 중복 인덱스가 없는 것이 좋습니다.
- 열에서 고유한 데이터 값의 수를 조사하여 테이블에 있는 행 수와 비교합니다. 조사 결과에 따라 해당 열이 인덱스로 처리할 수 있는 후보인지 또 인덱스 후보라면 어떤 형식의 인덱스를 만들 것인지 결정할 수 있습니다.
댓글목록
등록된 댓글이 없습니다.