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 40980 게시물 읽기
No. 40980
SQLP 문제 이해가 안갑니다;;
작성자
J
작성일
2015-10-22 15:54
조회수
8,727

아래 인덱스 현황을 고려할 때,

T1_X02 인덱스만 읽고도 처리할 수 있는 경우로 가장 부적절한 것은?

 

[DDL]

CREATE TALBE T1 (C1, C2, C3, C4, C5, CONSTRATINT T1_PK PRIMARY KEY (C1, C2) )

ORGANIZATION INDEX;

CREATE INDEX T1_X02 ON T1 (C3, C4);

 

1) SELECT C5 FROM T1 WHERE C3 = ?

2) SELECT COUNT(*) FROM T1 WHERE C4 >= ?

3) SELECT MAX(C2) FROM T1 WHERE C3 BETWEEN ? AND ?

4) SELECT COUNT(*) FROM T1 WHERE C3 = ? AND C4 IS NULL

 

정답 : 1

 

저는 2번이라고 생각했습니다.

결합인덱스는 WHERE절에 인덱스에 명시된 컬럼 순으로 사용이 되어야하는데

2번은 C3부터 사용하지 않고, C4 단독으로만 쓰여서 인덱스를 타지 않을 것이라 생각했는데

정답은 다르더라구요... 왜 2번이 답이 아니고 1번이 답인지 도무지 이해가 가지않습니다.ㅠㅠ

혹시 아시는분 계시면 설명 좀 해주시면 감사하겠습니다.

 

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

1번은 인덱스 스캔을 하긴 하는데
  - 인덱스 키컬럼이 아닌 C5 를 조회해야 하므로 테이블 렌덤엑세스를 동반합니다.
  - 문제는 인덱스만을 읽어야 한다고 했으니 틀린 답입니다.
2번은 인덱스 레인지 스캔을 할 수는 없습니다.
  - 그러나 인덱스 풀스캔은 가능합니다.
3번은 C3 조건으로 인덱스를 타는데
  - 인덱스 키컬럼이 아닌 C2 를 조회해야 하므로 테이블 렌덤엑세스를 동반할 듯 하지만
  - 일반 테이블의 인덱스는 ROWID 를 가지고 테이블을 찾지만
  - IOT 의 인덱스는 ROWID 가 아닌 IOT 의 PK 를 가지고 찾습니다.
  - 즉 인덱스 안에 C2 를 가지고 있습니다.
4번은 인덱스 스캔이 가능하구요
  - 결합인덱스는 한쪽 널값도 포함되구요.
  - 카운트 하는데 테이블 엑세스는 필요 없습니다.

마농(manon94)님이 2015-10-22 17:37에 작성한 댓글입니다.

마농님 상세한 설명 너무 감사합니다.

설명해주신 내용에 제가 몰랐던 내용이 많네요;;

많은 것을 배웠습니다. 다시 한 번 감사드립니다.

 

J님이 2015-10-23 08:08에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40985변경이력 관련 질문드립니다. [1]
새내기
2015-10-30
8511
40983SQL클라이언트 프로그램들이 (sqlldr, sqlplus) 먹통되는 현상 혹시 경험하신분 문의드립니다. [1]
메지나
2015-10-29
8335
40982퇴직율 구하는 쿼리 튜닝 [3]
쿼리요청
2015-10-28
9589
40980SQLP 문제 이해가 안갑니다;; [2]
J
2015-10-22
8727
40979특정 시점 이후 데이터가 수정된 테이블 찾는 방법을 알고싶습니다. [1]
한동훈
2015-10-21
8492
40978카운트 함수 여러개 사용 어떻게 하나요(서브쿼리없이) [1]
어려워
2015-10-20
8476
40977쿼리 좀 부탁합니다. [1]
땡구리
2015-10-20
8600
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다