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 21093 게시물 읽기
No. 21093
인덱스의 이상현상
작성자
제발
작성일
2004-12-17 12:56
조회수
2,001

아래의 sql문을 trace 를 분석한 결과입니다.

이 경우는 동일한 cd로 oracle을 설치하고

동일한 dmp 파일을 import 하여 사용하였습니다.

서버는 win2k 서비스팩4, ORACLE 9.2.0.1

단 차이는 사례1은 raid-5 구성이 되어 있고 사례2는 없다는

것입니다.

F1111_K TABLE 은 PK가 IDNO NUMBER(10) 으로 만 되어있고

다른 INDEX는 없습니다.


그리고 또 이상한 것은

사례1의 경우에

OPTIMIZER_MODE를 CHOOSE 로 할경우

SELECT IDNO FROM F1111_K WHERE IDNO = 146357 ;

=> FULL SCAN

OPTIMIZER_MODE를 RULE 로 할경우

=> IDNO 가 INDEX를 수행을 하는데

RULE MODE 에서

SELECT IDNO, S_K1 FROM F1111_K WHERE IDNO = 146357 ;

=> 이렇게 하면 INDEX를 수행하지 못합니다.


물론 사례2는 어떻게 하든 INDEX를 수행합니다.


이sql뿐 아니라 사례1부분이 전체적으로 속도가 느리고 index

수행을

제대로 못하고 있습니다. 더 많은 예를 보여드리고 싶으나

파일첨부가 안되니 안타깝네요..

혹시 이런 현상을 경험하셨거나 해결책을 아시는분께

답변부탁드립니다.


사례1 )

============================================================================

 


SELECT "F1111_K"."IDNO" , "F1111_K"."S_K1" ,

"F1111_K"."S_K2" , "F1111_K"."S_K3" , "F1111_K"."S_K4" ,

"F1111_K"."S_K5" , "F1111_K"."S_K6" ,

"F1111_K"."S_K7" , "F1111_K"."S_K8" , "F1111_K"."S_K9" ,

"F1111_K"."S_K10" , "F1111_K"."S_K11" ,

"F1111_K"."S_K12" , "F1111_K"."S_K13" ,

"F1111_K"."S_K14" , "F1111_K"."S_K15" ,

"F1111_K"."S_K16" , "F1111_K"."S_K17" ,

"F1111_K"."S_K18" , "F1111_K"."S_K19" ,

"F1111_K"."S_K20" , "F1111_K"."S_K21" ,

"F1111_K"."S_K22" , "F1111_K"."S_K23" ,

"F1111_K"."S_K24" , "F1111_K"."S_K25" ,

"F1111_K"."S_K26" , "F1111_K"."S_K27" ,

"F1111_K"."S_K28" , "F1111_K"."S_K29" ,

"F1111_K"."S_K30" , "F1111_K"."S_K31" ,

"F1111_K"."S_K32" , "F1111_K"."S_K33" ,

"F1111_K"."S_K34" , "F1111_K"."S_K35" ,

"F1111_K"."S_K36" , "F1111_K"."S_K37" ,

"F1111_K"."S_K38" , "F1111_K"."S_K39" ,

"F1111_K"."S_K40" , "F1111_K"."N_K1" , "F1111_K"."N_K2" ,

"F1111_K"."N_K3" , "F1111_K"."N_K4" ,

"F1111_K"."N_K5" , "F1111_K"."N_K6" , "F1111_K"."N_K7" ,

"F1111_K"."N_K8" , "F1111_K"."N_K9" ,

"F1111_K"."N_K10" , "F1111_K"."N_K11" ,

"F1111_K"."N_K12" , "F1111_K"."N_K13" ,

"F1111_K"."N_K14" , "F1111_K"."N_K15" ,

"F1111_K"."N_K16" , "F1111_K"."N_K17" ,

"F1111_K"."N_K18" , "F1111_K"."N_K19" ,

"F1111_K"."N_K20" , "F1111_K"."D_K1" , "F1111_K"."D_K2" ,

"F1111_K"."D_K3" , "F1111_K"."D_K4" ,

"F1111_K"."D_K5" , "F1111_K"."D_K6" , "F1111_K"."D_K7" ,

"F1111_K"."D_K8" , "F1111_K"."D_K9" ,

"F1111_K"."D_K10"

FROM "F1111_K"

WHERE ( "F1111_K"."IDNO" = 146357 )



call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ----------

---------- ----------

Parse 1 0.03 0.02 1 1 0 0

Execute 1 0.00 0.00 0 3 0 0

Fetch 1 0.00 0.01 0 0 0 1

------- ------ -------- ---------- ---------- ----------

---------- ----------

total 3 0.03 0.04 1 4 0 1


Misses in library cache during parse: 1

Optimizer goal: CHOOSE

Parsing user id: 61 (MODELF)


Rows Row Source Operation

------- ---------------------------------------------------

0 TABLE ACCESS FULL F1111_K



Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

0 TABLE ACCESS (FULL) OF ''F1111_K'' [:Q1470000]

SELECT /*+ NO_EXPAND ROWID(A1) */

A1."IDNO",A1."S_K1",A1."S_K2",

A1."S_K3",A1."S_K4",A1."S_K5",A1."S_K6",A1."S_K7",A1."S_K8",

 

A1."S_K9",A1."S_K10",A1."S_K11",A1."S_K12",A1."S_K13",

A1."S_K14",A1."S_K15",A1."S_K16",A1."S_K17",A1."S_K18",

A1."S_K19",A1."S_K20",A1."S_K21",A1."S_K22",A1."S_K23",

A1."S_K24",A1."S_K25",A1."S_K26",A1."S_K27",A1."S_K28",

A1."S_K29",A1."S_K30",A1."S_K31",A1."S_K32",A1."S_K33",

A1."S_K34",A1."S_K35",A1."S_K36",A1."S_K37",A1."S_K38",

A1."S_K39",A1."S_K40",A1."N_K1",A1."N_K2",A1."N_K3",A1."N_K4",

 

A1."N_K5",A1."N_K6",A1."N_K7",A1."N_K8",A1."N_K9",A1."N_K10",

 

A1."N_K11",A1."N_K12",A1."N_K13",A1."N_K14",A1."N_K15",

A1."N_K16",A1."N_K17",A1."N_K18",A1."N_K19",A1."N_K20",

A1."D_K1",A1."D_K2",A1."D_K3",A1."D_K4",A1."D_K5",A1."D_K6",

 

A1."D_K7",A1."D_K8",A1."D_K9",A1."D_K10" FROM "F1111_K"

PX_GRANULE(0, BLOCK_RANGE, DYNAMIC) A1 WHERE A1."IDNO"=

146357




사례2 )

============================================================================

 


SELECT "F1111_K"."IDNO" , "F1111_K"."S_K1" ,

"F1111_K"."S_K2" , "F1111_K"."S_K3" , "F1111_K"."S_K4" ,

"F1111_K"."S_K5" , "F1111_K"."S_K6" ,

"F1111_K"."S_K7" , "F1111_K"."S_K8" , "F1111_K"."S_K9" ,

"F1111_K"."S_K10" , "F1111_K"."S_K11" ,

"F1111_K"."S_K12" , "F1111_K"."S_K13" ,

"F1111_K"."S_K14" , "F1111_K"."S_K15" ,

"F1111_K"."S_K16" , "F1111_K"."S_K17" ,

"F1111_K"."S_K18" , "F1111_K"."S_K19" ,

"F1111_K"."S_K20" , "F1111_K"."S_K21" ,

"F1111_K"."S_K22" , "F1111_K"."S_K23" ,

"F1111_K"."S_K24" , "F1111_K"."S_K25" ,

"F1111_K"."S_K26" , "F1111_K"."S_K27" ,

"F1111_K"."S_K28" , "F1111_K"."S_K29" ,

"F1111_K"."S_K30" , "F1111_K"."S_K31" ,

"F1111_K"."S_K32" , "F1111_K"."S_K33" ,

"F1111_K"."S_K34" , "F1111_K"."S_K35" ,

"F1111_K"."S_K36" , "F1111_K"."S_K37" ,

"F1111_K"."S_K38" , "F1111_K"."S_K39" ,

"F1111_K"."S_K40" , "F1111_K"."N_K1" , "F1111_K"."N_K2" ,

"F1111_K"."N_K3" , "F1111_K"."N_K4" ,

"F1111_K"."N_K5" , "F1111_K"."N_K6" , "F1111_K"."N_K7" ,

"F1111_K"."N_K8" , "F1111_K"."N_K9" ,

"F1111_K"."N_K10" , "F1111_K"."N_K11" ,

"F1111_K"."N_K12" , "F1111_K"."N_K13" ,

"F1111_K"."N_K14" , "F1111_K"."N_K15" ,

"F1111_K"."N_K16" , "F1111_K"."N_K17" ,

"F1111_K"."N_K18" , "F1111_K"."N_K19" ,

"F1111_K"."N_K20" , "F1111_K"."D_K1" , "F1111_K"."D_K2" ,

"F1111_K"."D_K3" , "F1111_K"."D_K4" ,

"F1111_K"."D_K5" , "F1111_K"."D_K6" , "F1111_K"."D_K7" ,

"F1111_K"."D_K8" , "F1111_K"."D_K9" ,

"F1111_K"."D_K10"

FROM "F1111_K"

WHERE ( "F1111_K"."IDNO" = 146357 )



call count cpu elapsed disk query current rows

------- ------ -------- ---------- ---------- ----------

---------- ----------

Parse 1 0.00 0.00 0 0 0 0

Execute 1 0.00 0.00 0 0 0 0

Fetch 1 0.00 0.00 0 3 0 1

------- ------ -------- ---------- ---------- ----------

---------- ----------

total 3 0.00 0.00 0 3 0 1


Misses in library cache during parse: 1

Optimizer goal: CHOOSE

Parsing user id: 100 (ASIA)


Rows Row Source Operation

------- ---------------------------------------------------

1 TABLE ACCESS BY INDEX ROWID F1111_K

1 INDEX UNIQUE SCAN F1111_K_PK (object id 59481)



Rows Execution Plan

------- ---------------------------------------------------

0 SELECT STATEMENT GOAL: CHOOSE

1 TABLE ACCESS (BY INDEX ROWID) OF ''F1111_K''

1 INDEX (UNIQUE SCAN) OF ''F1111_K_PK'' (UNIQUE)


********************************************************************************

 

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

밑에 13667글 참고 하셔서..

 

서버쪽 parameter를 확인 해보심이..

 

작살초보(작살초보)님이 2004-12-17 13:39에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
21096오라클 8i select시 버벅거림 [1]
sooho
2004-12-17
1933
21095데이터를 5분 단위로 합산해서 가져 올려고 하는데... [2]
정진종
2004-12-17
7361
21094[급] 카테고리 이름까지 출력 하고 싶어요 도와주세요. [1]
임장환
2004-12-17
1643
21093인덱스의 이상현상 [1]
제발
2004-12-17
2001
21092두개의 테이블을 합하려고하는데... [4]
황장하
2004-12-17
2373
21091기초적 인덱스 관련 질문요. [1]
Jung
2004-12-17
1945
21090실시간으로 데이터 변경을 알 수 있는 방법은? [4]
복팅이
2004-12-17
2288
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다