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 8727 게시물 읽기
No. 8727
인덱스를 타는지 확인할려면...
작성자
이기자(k3i2)
작성일
2010-11-01 18:36ⓒ
2010-11-01 19:05ⓜ
조회수
8,204

Ms-SQL은 아주쉽게 확인이 가능한데, postgresql는 좀 어렵네요. T.T

explain analyze select * from t_student
where mid = 'scall'
  And saupjangc = '01'
  And stu_c > 10020000
  And stu_n <> ''   의 결과가 아래처럼 나왔는데, 인덱스 안타는거 맞죠?
위 조건 컬럼 모두 인덱스를 걸었는데 걸기전하고 조회속도가 같네요..

"Seq Scan on t_student  (cost=0.00..1151.92 rows=26199 width=582) (actual time=0.025..29.773 rows=26133 loops=1)"
"  Filter: ((stu_c > 10020000) AND ((stu_n)::text <> ''::text) AND ((mid)::text = 'scall'::text) AND ((saupjangc)::text = '01'::text))"
"Total runtime: 31.580 ms"

뭐가 어떻게 잘못된건가요? 컬럼 타입은,
mid character varying(20) NOT NULL,
  saupjangc character varying(2) NOT NULL,
  stu_c bigint NOT NULL DEFAULT nextval('student_idx'::regclass),
  stu_n character varying(30) NOT NULL,

입니다.

그리고 위 쿼리가 어느땐 1/10 정도로 빨라졌다가 또 어느땐 10배 느려졌다 하는건 왜죠?
로컬 PC의 DB이니 네트웍 속도도 아닌데...
인덱스를 탔다가 안탔다가 하는거 같네요.

 

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

안녕하세요,

 

실행계획은 인덱스를 안쓴다는 의미가 맞습니다. (seq scan)

 

쿼리가 인덱스를 쓰지 않는 이유는 여러가지가 있습니다. 쿼리나 통계정보의 영향을 받습니다.

 

인덱스를 쓰기엔 데이터가 너무 작은 경우나 인덱스의 효율이 떨어지는 경우(카디널리티)도 쓰지 않을 수 있습니다.

김영우님이 2010-11-04 11:30에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
8730로그에 주기적으로 같은문구가 출력됩니다. [2]
열혈지누
2010-11-05
8456
8729서버와 클라이언트간의 인코딩 문제가 있습니다. [3]
souler
2010-11-04
8327
8728서버에 연결할 수 없음 에러 [6]
심상호
2010-11-03
9278
8727인덱스를 타는지 확인할려면... [1]
이기자
2010-11-01
8204
8725파티션한 테이블 검색할 때... [1]
유석훈
2010-11-01
8900
8723db를 restore 하면 sequence 에 한번 오류가 발생합니다.
지우개
2010-10-23
7770
8720[질문] 9.1 Streaming Replication 구현중입니다 . -_-;; [1]
롱다리
2010-10-21
7667
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다