이와 유사한 테이블이 있다고 가정합니다.
테이블 생성 테스트 1 (
그리고 응용 프로그램은 양식의 많은 쿼리를 발행합니다.
where id =에서 컨텐츠를 선택하십시오.상수
;
사전 준비가 없으면 시스템은 전체를 스캔해야합니다test1
테이블, 행별로 행, 모든 일치하는 항목을 찾으십시오. 에 많은 행이 있다면test1
그리고 그러한 쿼리에 의해 반환되는 몇 개의 행 (아마도 0 또는 1) 만 있으면 분명히 비효율적 인 방법입니다. 그러나 시스템이에 대한 색인을 유지하도록 지시받은 경우id
열에서 일치 행을 찾는 데보다 효율적인 방법을 사용할 수 있습니다. 예를 들어, 검색 트리 안으로 몇 레벨 만 걸어야 할 수도 있습니다.
비슷한 접근법은 대부분의 논픽션 서적에서 사용됩니다. 독자들이 자주 찾는 용어와 개념은 책 끝에서 알파벳 지수로 수집됩니다. 관심있는 독자는 관심있는 자료를 찾기 위해 책 전체를 읽지 않고 와이즈 토토 비교적 빠르게 스캔하고 적절한 페이지로 뒤집을 수 있습니다.
다음 명령을 사용하여에 인덱스를 생성 할 수 있습니다.id
논의 된대로 칼럼 :
test1 (id);에서 인덱스 테스트 생성 1_id_index 생성
이름test1_id_index
자유롭게 선택할 수 있지만 나중에 색인이 무엇인지 기억할 수있는 무언가를 선택해야합니다.
와이즈 토토 제거하려면를 사용하십시오.Drop Index
명령. 언제든지 테이블에 와이즈 토토 추가하고 제거 할 수 있습니다.
인덱스가 생성되면 더 이상 중재가 필요하지 않습니다. 테이블이 수정되면 시스템이 와이즈 토토 업데이트하며 순차적 테이블 스캔보다 더 효율적이라고 생각할 때 쿼리의 색인을 사용합니다. 하지만 당신은를 실행해야 할 수도 있습니다.분석
쿼리 플래너가 교육 된 결정을 내릴 수 있도록 통계를 업데이트하도록 정기적으로 명령하십시오. 보다범퍼카 토토 : 문서 : 11 : 14 장. 성능 팁인덱스 사용 여부와 플래너가 언제, 왜 선택할 수 있는지에 대한 정보not인덱스 사용.
인덱스도 혜택을 줄 수 있습니다업데이트
and삭제
검색 조건이있는 명령. 또한 인덱스는 가입 검색에 사용할 수 있습니다.
큰 테이블에서 와이즈 토토 만드는 데 시간이 오래 걸릴 수 있습니다. 기본적으로PostgreSQLreads ( 허용select
Statements)는 인덱스 생성과 병렬로 테이블에서 발생하지만 (를 씁니다.삽입
, 업데이트
, 삭제
)는 인덱스 빌드가 완료 될 때까지 차단됩니다. 생산 환경에서 이것은 종종 용납 할 수 없습니다.동시에 빌드 인덱스.
인덱스가 작성된 후 시스템은 테이블과 동기화해야합니다. 데이터 조작 작업에 오버 헤드가 추가됩니다.토토 꽁 머니 PostgreSQL : 문서 : 11 : 69.7. 힙 전용 튜플 (뜨거운). 따라서 쿼리에 거의 사용되지 않거나 사용되지 않은 인덱스를 제거해야합니다.