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 4733 게시물 읽기
No. 4733
인덱스에 대한 몇가지 질문
작성자
Operator
작성일
2003-05-30 00:18
조회수
2,005

1.

제가 바본지 이게 왜 인덱스가 안걸리는건지 이해가 안갑니다.

 

create table test (a int);

create index testidx on test (a);

insert into test values(1);

insert into test values(2);

insert into test values(5);

insert into test values(2);

insert into test values(4);

insert into test values(41);

insert into test values(28);

 

explain select * from test where a>0;

Seq Scan on test (cost=0.00..22.50 rows=333 width=4)

Filter: (a > 0)

 

explain select * from test where a=0;

Index Scan using testidx on test (cost=0.00..17.07 rows=5 width=4)

Index Cond: (a = 0)

 

이런 현상에 대해 설명좀 해주세요. 왜 =는 돼고 >는 안되는지요.

 

2.

인덱스가 생성 될때 어떤 상태로 소트돼 저장 되나요?

원 데이터row의 정렬순서로 저장되는건가요?

아니면 인덱스 걸린 칼럼이 소트된 상태로 저장 될까요?

최근에 읽은 책의 부분범위 처리에 대한 부분에서 인덱스된 값이

조건의 최대범위에 도달하면 옵티마이저는 처리를 중단 한다

이런 항목이 있는데 이것은 인덱스가 해당 값에 따라 소트되어

저장되야지 말이 되는것 같아서요. 왜냐하면 최대 범위에 도달

했더라도 무작위로 소트되었다면 특정값이후에도 조건에 해당

되는 값이 있을수도 있지 않을까요?

 

3.

btree,rtree,hash 인덱스의 내부 매카니즘에 대해 설명된 자료를 얻을

수 없을까요? 제가 가진 데이터 베이스 관련 서적이 3권이고 여기

dbms일반에서 칼럼하고 여기저기 읽어 봤는데 이런 인덱스 구조에 대해

이미 알고 있다는 전제 하에서 글이 진행되는건 많은데 인덱스 자체의

구조에 대해 설명은 찾기가 힘들더라구요. 좀 부탁좀 드립니다.

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

정상적인 인덱싱임에도 불구하고, 인덱싱을 사용하지 않는 경우는 테이블을 직접 full로 검색하는 비용이 인덱스로 검색하는 비용보다 적게든다고 쿼리 옵티마이져가 판단했기 때문입니다.

 

사람이 보았을때, 정말 그렇다면, 그 쿼리를 조정해야할 것이고, 그렇지 않다면, vacuum analyze 명령으로 쿼리 옵티마이져에게 최근 자료상태를 제공해서 다시 한번 인텍싱을 사용할지를 판단할 기회를 제공해주어야합니다.

 

또, 다른 한편으로 시스템 메모리가 부족하거나, PostgreSQL 버전이 낮아서 인덱싱 사용이 부적절하다고 판단되어졌을 경우도 있고,

 

또 다른 한편으로 인덱스를 hash type으로 만들어두고, = 검색을 하지 않는 경우일도 있습니다.

 

-----

 

PostgreSQL의 create index 명령으로 디폴트로 만들어지는 인덱스는 파일은 btree 파일입니다.

즉, 저장되어질때, 상위노드/하위노드 형태로 저장되어집니다.

 

RDBMS의 인덱스 내부 구조는 '파일구조론(?), 파일처리' 같은 전산학시간에 배우는 그것입니다.

 

관심이 있으시면 전산학 도서를 찾으셔서 읽으셔야겠네요. 아니면 인터넷을 뒤지면 아주 자세히 상세히 예제까지 포함해서 알려주는 사이트들이 많으니, 그런 페이지들을 참고하셔도 좋을 듯.

김상기(ioseph)님이 2003-05-30 13:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4739트리거에서 널값 체크에 따른 업데이트 [1]
초보입니다.
2003-06-01
2088
4736락에 대해서.. [2]
초본데염
2003-05-31
1964
4735Servlet 과 PostgreSQL 연결문제 (JDBC) [1]
최종일
2003-05-30
2385
4733인덱스에 대한 몇가지 질문 [1]
Operator
2003-05-30
2005
47327.3.2에서 Tuple 사이즈 에러 [2]
초본데염
2003-05-27
1201
4731[질문]분산 트랜잭션 지원 여부...... [1]
김현성
2003-05-27
1358
4730PL/SQL을 쓰려면 무얼? 쌩초보여요..ㅠ.ㅠ [1]
박휘준
2003-05-27
1412
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다