가볍게 논의하다 데이터베이스 최적화 의 - 인덱스

데이터베이스 인덱스

1.什么是索引

지금 데이터베이스 중 색인 의미를 및 일상 의미의 '색인 "단어를 얼마나 큰 차이가 없다 (생각해 어렸을 때 사전을), 그것은 사용할 데이터베이스 테이블 데이터 액세스 속도 데이터베이스 개체 높이다.
A)색인 목록 검색 다 피할 수 있다.다수의 조회할 수 있다 겨우 스캔 소량 인덱스 페이지 및 데이터 페이지 아니라 모든 데이터를 페이지 사이를 옮겨다니기.
B)비클러스터형 인덱스 대해 어떤 조회 심지어 돼, 안 접근 데이터 페이지.
C)클러스터형 인덱스 피할 수 있을 데이터 삽입 조작 집중되다 시계 마지막 데이터 페이지.
D)일부 경우 사용할 수 인덱스 아직 피할 분류 조작.


물론 알고 있지만 색인 검색 속도를 높일 수 있다. 그러나 그들 도 때문에 데이터베이스 시스템 업데이트 데이터 성능 하락 때문에 대부분 데이터 업데이트 필요 동시에 업데이트 인덱스.

예: 이렇게 한 질의: select * from table1 where id=44. 인덱스 없으면 반드시 전 테이블 사이를 옮겨다니기 때까지 ID 같다 44 이 한 줄 수 있을 때까지 의해; 인덱스 후 (반드시 이 ID 이 열 위에 세운 색인) 를 직접 지금 색인 안에 44 (찾는 것도 바로 ID 이 열 찾을 수 있다는 것을) 이 되는데 위치, 즉 찾아서 이 돼.볼 수 있는 것은 에 위치 색인.

2.색인 저장

색인 레코드 한 가지 중 포함하는 기본 정보 포함: 键值 (즉 너 정의 색인 때 지정한 모든 필드 값) + 논리 포인터 (가리키는 데이터 페이지 혹은 다른 인덱스 페이지).

 

당신이 위해 한 장 빈 목록 색인 생성 때 데이터베이스 시스템 은 너 분배 한 인덱스 페이지 이 인덱스 페이지 너 산입 데이터 전에 줄곧 비어 있습니다.이 페이지 이때 이왕 루트 노드 또한 잎 노드.너 갈 때마다 시계 중 한 줄 데이터 삽입 데이터베이스 시스템, 즉 향해 루트 노드 삽입하기 이 중 한 줄 색인 레코드.뿌리 노드 되고 만 때 데이터베이스 시스템 대개 따라 다음 단계 진행 분열:
A)생성 두 아들 노드
B)는 원래 루트 노드 중 데이터 비슷이 뜯어 조각으로 각각 쓰기 새 두 아들 노드
C)뿌리 노드 중 게다가 가리키는 두 아들 이름은 바늘이


일반적인 상황 아래에서 때문에 색인 레코드 겨우 색인을 포함하는 필드 값 (및 4-9 바이트 바늘이), 색인 항목 실제 데이터 줄 더 작은 많은 인덱스 페이지 비교하면, 데이터 페이지 있어서 밀집해 있는 많은 한다.인덱스 페이지 저장소 수량 한 수 많은 색인 레코드, 이 것을 의미한다 색인에 찾기 때 I/O 위에 큰 우세를 차지하다, 이해 이 좀 도움이 처음부터 알고 인덱스 우세를 사용 본질적으로.

3.索引的类型


A) 링 인덱스: 고유 인덱스 불허 두 줄이 같은 색인 가치가 있다

B) 마스터 키 색인: 정의 한 곁쇠 자동 생성 것이다 곁쇠 인덱스, 인덱스 곁쇠 유일한 색인 특수한 종류. 요구하는 모든 값 유일한 또한 못 비어.

C)클러스터형 인덱스, 인덱스 순서에 따라 온 테이블 데이터 저장.에 대해 클러스터형 인덱스, 잎이 노드 즉 저장하였다 실제 데이터 돼, 따로 데이터 페이지 더 이상 있으면 모든 시계 하나 밖에

D)비클러스터형 인덱스, 테이블 데이터 저장소 순서 및 색인 순차 무관하다.에 대해 비클러스터형 인덱스, 데이터 저장소 한 위치 색인 기억 다른 위치를 색인에 포함하는 가리키는 데이터 저장 위치 지시자.


4. 색인 생성 문법

crate [unique](유일한) [clustered] (모이다) [nonclustered] index 색인 이름 on 시계 (열명)

주: 이상 [] 값 필요에 따라 중 하나를 선택하십시오


5.인덱스 삭제 문법

drop index 시계. 색인 명

sysindexes: 시스템 인덱스 목록


6.색인 장단점

장점: 색인 생성 크게 높일 수 있습니다. 시스템 성능.
    1):통해 유일성 색인 만들기 수 보증 데이터베이스 중 매 돼 데이터 고유성.
    2):크게 데이터 검색 속도를 빠르게 할 수 있다, 이 역시 색인 생성 중 가장 주요한 원인.
    3):가속 테이블, 표 수 사이의 연결, 특히 실현 데이터 참고 무결성 측 특별한 의미가 있는.
    4):사용 묶기 및 정렬하기 자구 진행 데이터 검색 할 때 같은 현저히 감소했다 중 묶기 및 정렬하기 시간 안내.
    5):통해 사용할 수 색인을 검색 과정에서 사용 최적화 숨은 장치, 시스템 성능 향상.


단점: 1):색인 생성 및 관리 인덱스 유념해야 시간, 이런 시간 데이터 크기 증가 따라 증가.
    2):색인 필요한 물리 공간을 차지한다 제외하고는 데이터 표 를 데이터 공간 외에도 하나하나 색인 또 꼭 물리 공간을 차지한다. 만약 만들자 밀집하여 인덱스, 그렇게 하면 더 큰 필요한 공간.
    3):시계를 맞추다 중 데이터 추가, 삭제 및 수정 걸로 진행할 때, 색인 나도 동적 관리, 이렇게 낮아졌다 데이터 보호 속도.


7. 어디 건물 인덱스

  인덱스, 건립 은 데이터베이스 중의 어떤 열 위.지금 색인 생성 때 반드시 고려해야 할 수 있는 어떤 열 위에 색인 생성, 어떤 열 수 색인 생성.

  일반적으로 반드시 이런 열 위에 색인 생성:
  1):여기 자주 필요한 검색 열 위에 검색 속도를 빠르게 할 수 있다,
  2):는 로서 곁쇠 열 위에 강제 이 열 고유성 및 조직 리스트 중에 데이터 정렬 구조,
  3):여기 자주 쓰는 연결 열 위에 이 열 주로 어떤 외래 키 연결 속도를 빠르게 할 수 있다; 여기 자주 필요에 범위 내에서만 검색 열 위에 색인 만들기 때문에 색인 이미 정렬 그 지정한 범위는 연속적으로,
  4):지금 정렬 더 자주 열 위에 색인 만들기 때문에 색인 이미 정렬 이렇게 조회할 수 있다 색인 이용하여 정렬 속도를 정렬 조회 시간,
  5):여기 자주 사용하는 지금 WHERE 자구 중의 열 위 색인 생성 속도를 조건 판단 속도.


  똑같이 대해 어떤 열 안 되는 색인 생성.일반적으로 안 되는 색인 만들기 이 열 아래의 특징을 가지고 있다:
  1):그 는 대해 조회 중 거의 사용 또는 참고 열 안 되는 색인 생성.이 때문에 이왕 이 열 거의 사용 까지 있기 때문에 색인 또는 없다 색인 및 검색 속도를 높일 수 없다.

   반면 때문에 늘 색인 오히려 내렸다 시스템의 유지 속도와 증대되었다 공간 수요.
  2):그 밖에 대해 거의 데이터 값 열 안 늘려야 색인.이 때문에 이 열 순위 적다, 예를 들면, 인사 시계의 성별 열, 조회 결과 중 결과 집합 데이터 돼 차지했다 시계 중 데이터 되는 큰 비례,

   즉 필요 는 표 가운데 검색 데이터 돼 비율이 매우 크다.증가 색인 및 분명히 검색 속도를 빠르게 할 수 없다.
  3):그 정의를 위해 대해 text, image, bit 데이터 형식을 열 안 늘려야 색인.이 때문에, 이 열 데이터 양 아니면 상당히 큰, 아니면 순위 아주 불리하다 사용 인덱스.
  4):이 수정 성능 훨씬 크다 검색 성능 때 안 되는 색인 생성.이 때문에, 수정 기능 및 검색 성능 서로 모순된다.이 증가 색인 를 할 때 검색 성능 향상, 근데 낮아질 수정 성능.

    이 감소 색인 를 할 때, 수정, 성능 향상, 낮추다 검색 성능.그래서 내가 수정 작업 훨씬 더 검색 작업 때 안 되는 색인 생성.

글쓴이 도현 작성일 2015-01-19 22:51