database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 4982 게시물 읽기
No. 4982
Primary Key로 생성되는 index는 어떤 종류인가요?
작성자
이종석(slaghter)
작성일
2003-10-02 22:18
조회수
2,567

PostgreSQL 4.3 버젼을 쓰고 있는데...

 

index를 생성할때 보면, 종류가 btree, rtree, hash, gist (새로 추가) 있던데..

각각의 차이는 무엇인가요?

 

또한 Primary Key로 생성되는 index는 어떤 종류인가요?

이 글에 대한 댓글이 총 4건 있습니다.

BTREE 인걸로 압니다~~

신기배(nonun)님이 2003-10-02 22:34에 작성한 댓글입니다.

btree는 디폴트로 걸리는 인덱스이고요 주로 숫자형이나 문자형에 걸리는 인덱스입니다.

 

rtree는 다차원데이터타입에 쓰이는 인덱스이고요, 주로 2차원을 가지는 데이터 타입인 point나 polygon 따위의 데이터를 저장하는 테이블에 걸리는 인덱스입니다.

 

hash는 hashing 방법을 이용한 인덱싱 방법입니다. hash는 트리구조를 가지지 않고 hash function을 이용하는게 특징입니다.

 

gist는 GeneraIzed Search Tree의 약자이고요, 개발자들을 위한 인덱스 패키지라고 생각하면 쉽습니다. contrib 폴더에 가시면 다양한 타입들을 지원하는데요... 그러한 타입들에 인덱스를 만들고 싶을때 모든 코딩을 전부 하지 않더라도 이 gist라는 놈을 이용하면 index를 비교적 쉽게 만들 수 있죠... 그래서, gist는 그 자체로는 인덱스로 보긴 어렵습니다. 하지만, gist를 이용해서 rtree on gist 혹은 btree on gist, int array on gist 등의 인덱스를 만들 수 있고, Create Index 문장에서 이렇게 구체화된 인덱스를 사용할 수 있습니다...

이민우(lmana)님이 2003-10-04 23:39에 작성한 댓글입니다.
이 댓글은 2003-10-04 23:42에 마지막으로 수정되었습니다.

답변 주신 이민우님, 신기배님 정말 감사합니다. (__)

 

추가로 여쭈어 보겠습니다.

 

이문제가 나온것은 두컬럼을 primary key 로 잡는 composite 키의 경우 속도가 느리다는 얘기가 나와서 인덱스가 틀리게 잡히는 줄로 잘못알고 여쭈어 본것입니다. 다른 글에서 찾은 아래 Rank Access Path를 보면...

 

Rank Access Path
=====================================
1. ROWID에 의한 한 행
2 클러스터 조인에 의한 한 행
3. Unique나 Primary Key를 사용한 해쉬 클러스터에 의한 한 행
4. Unique나 Primary Key에 의한 한 행
5. 클러스터 조인
6. 해쉬 클러스터 키
7. 인덱스된 클러스터 키
8. Composite 키

이하 생략....

=======================================

 

여기서보면 8번으로 3,4번 보다 느립니다.

3번,4번의 차이점인 해쉬 클러스터는 어떻게 설정하는 것인지요?

그리고 위글은 Oracle 의 경우인데 PostgreSQL에선 어떤가요?

이종석(slaghter)님이 2003-10-06 14:08에 작성한 댓글입니다.
이 댓글은 2003-10-06 14:10에 마지막으로 수정되었습니다.

어떤 키가 있고, 그 키의 순서가 절대로 바뀌지 않고,

중간에 끼어드는 일이 없다면, 당연히 크러스트가 제일 빠르겠지요.

(개인적인 생각으로는 특정 자료의 단일 검색에 대해서는 hash 인덱스가 제일 빠를 듯싶은데, 아무튼 범위 검색이라면, 복합 btree 인덱스보다 크러스트가 바를겝니다)

PostgreSQL에서도 크러스트 방식의 인덱스 - 엄격히 말하면 인덱스라고 하기는 그렇고, 자료의 저장방식이라고 하는 것이 맞겠지요 - 를 지원하는데, 자세한 것은 아래 문서를 참조하세요.

 

http://database.sarang.net/database/postgres/manual/manual-7.3/sql-cluster.html
김상기(ioseph)님이 2003-10-07 12:11에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4985PostgreSQL 백업시 MySQL 형으로 백업? [1]
김명호
2003-10-07
1476
4984libpq.so.2.1 이 없다고 하는데... [1]
전창수
2003-10-07
1187
4983데이터베이스에 접근을 하려니 에러가 납니다. [1]
김범우
2003-10-06
1362
4982Primary Key로 생성되는 index는 어떤 종류인가요? [4]
이종석
2003-10-02
2567
49817.3.4 설치후 버전 문제.. [1]
이종래
2003-10-02
1132
4980백업과 복구에 관한 질문 [2]
정보통
2003-09-30
1596
4978PostgreSQL 데이타베스에서 BOM은 안되나요 [5]
강구만
2003-09-30
1472
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다