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 8940 게시물 읽기
No. 8940
어떻게 해야 인덱스를 타는 건가요?
작성자
현승(canifly)
작성일
2012-02-05 18:33
조회수
8,662

3천만건 정도 데이터가 있는 테이블입니다. 

인덱스는 3개가 있고   

   IDX1 ( proc_date, emp_code, social_number)

   IDX2 ( proc_date, log_seq)

   IDX3 ( proc_date)

SQL> select  proc_date  from T_USERS where proc_date > '20120100' 

analye 하던 뭘하던 절대 인덱스를 안타네요.      오라클 처럼 강제로 인덱스를 태울 방법이 없나요?

 

사용제품이 비싸도 이유가 있다는 걸 절감.. ㅠ ㅠ.

 

설정은   enable_seqscan  = on

               enable_indexscan = on

 

입니다. 

 

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

explain analyze 를 붙여서 쿼리를 날리시면 쿼리 플랜과 cost가 표시됩니다.

그걸 보시고 예측이 잘못된 것 같으면 analyze table을 한 번 해주세요.

예측이 잘못되지 않았다면 해당 테이블을 풀스캔 하는것이 비용이 덜 들기 때문에 옵티마이저가 그렇게 판단한 것 입니다.

pgsql의 쿼리 옵티마이저가 대부분의 오라클 버전의 그것보다 똘똘한 편입니다.

 

enable_seqscan을 끄고 돌리면 강제로 인덱스를 태울 수 있습니다.

신기배(소타)님이 2012-02-06 04:56에 작성한 댓글입니다.

 to 소타님

analyze 해도 마찬가지네요.  

심지어 같은 쿼리문에 where절 값만 다른데도 인덱스를 탔다가 안탔다가...   지 맘대로입니다. 

 

쿼리옵티마이저가 똑똑한거 같지는 않네요. 

3천만건이 있는 테이블에 데이터에 날짜 기준으로 특정일만(300만건)카운트 뽑으라는 쿼리문이  full scan 하는게 더 효율적이라고 계산하는 옵티마이저니까요.  

 

Postgresql 쓴지는 2달 정도 됬는데...   지금봐서는 쿼리 옵티마이저가 영~~~ 아닌듯.

 

 

현승(canifly)님이 2012-02-06 10:53에 작성한 댓글입니다.

explain analyze 결과를 보여주세요 ㅎ

 

테이블의 데이터 분포를 재계산 하는 명령은 vacuum analyze 입니다. analyze해보시라는 건 이걸 말씀 드린거입니다.

신기배(소타)님이 2012-02-06 15:23에 작성한 댓글입니다.
이 댓글은 2012-02-06 15:24에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
8947postgreSQL에서 이미지 파일 다운 가능한가요?? [2]
김종수
2012-02-07
9408
8946psql 상에서의 한글깨짐현상!! [4]
구자은
2012-02-07
13308
8941rank없이 테이블의 상위 1~5등 어떻게 가져올까요? [1]
박노성
2012-02-06
9829
8940어떻게 해야 인덱스를 타는 건가요? [3]
현승
2012-02-05
8662
8935프로그램을 실행했을때 변경된 테이블을 찾고싶습니다. [2]
히말라야새
2012-02-03
8812
8934top 명령어로 본 postgresql 프로세스 질문 [4]
facy
2012-02-02
8331
8932목록을 이렇게 호출하고 싶습니다. [1]
이혜미
2012-02-01
7443
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다