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
운영게시판
최근게시물
Oracle Q&A 38612 게시물 읽기
No. 38612
인덱스에 대한 질문입니다.
작성자
개발자
작성일
2011-06-16 14:13ⓒ
2011-06-16 14:41ⓜ
조회수
2,838

TABLE A

A B C D E F
AA 01 10 PP 01 XX
AA 02 20 PP 01 XX

가 있습니다. 이테이블의 PK는 A,B입니다.

그리고 다른 테이블과 조인시 비교 컬럼이 D,E,F라서 인덱스로 만들었습니다.

다른 테이블인 B와 조인을 할때 PK를 사용안하고 (A,B는 각 테이블의 키역할만 합니다.)

 WHERE A.D = B.D  AND A.E = B.E AND A.F = B.F로 하면 인덱스를 탈것 같은데요.

만약  WHERE A.D = B.D  AND A.E = B.E 해도 인덱스를 타게 되는지요?

궁금한 점은 인덱스로 명시한 컬럼을 다 써야하는지 아니면 그중에 한두개만 사용해도 인덱스를 제대로 타는지 궁금합니다.

명시한 컬럼을 다 써야한다면 인덱스를 추가하려구 하거든요.

 

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

인덱스의 모든 컬럼을 WHERE 절에 나열할 필요는 없으며...일부 컬럼만 탈 수 있습니다. 다만, 중간에 이가 빠지지 않고 조건이 들어와야 합니다.

 

물론 D+E+F와 D+E의 경우 Clustering Factor가 뒤에 F 컬럼 때문에 많이 차이가 날 수도 있으며 성능면에서 완전히 동일 하지 않을 수도 있습니다만... 일반적으로 D+E+F 하나만으로도 충분하다고 보여집니다.

 

일단 D+E+F 인덱스를 사용해보시고 실행계획등을 검토 해보시기 바랍니다.

김주현님이 2011-06-16 18:33에 작성한 댓글입니다.
이 댓글은 2011-06-16 18:38에 마지막으로 수정되었습니다. Edit

조언에 감사드립니다.

아직은 자료가 많지 않아서 비교가 될지는 잘모르겠지만 일단은 D+E+F로 만들어 놓고 실행해보겠습니다.

개발자님이 2011-06-17 15:14에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
38615쿼리문의 [1]
레이첼
2011-06-16
2969
38614function 문의 [2]
김홍찬
2011-06-16
3171
38613오라클 세로 테이블 가로로 만드는 방법중 [1]
이찬호
2011-06-16
4566
38612인덱스에 대한 질문입니다. [2]
개발자
2011-06-16
2838
38611기존 DB에 새 사용자 생성시... [1]
헌터
2011-06-16
2648
38610[질문]메인서버와 백업서버를 구성항 운영중발생 하는 문제 [5]
이성근
2011-06-16
3688
38609해당 데이타의 해당월에 대한 건수를 구하려고 합니다. [2]
봉달이
2011-06-15
3223
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.032초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다