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 40064 게시물 읽기
No. 40064
select 조건에 특정 field를 추가하면 속도가 느려지네요
작성자
최덕환(dukhoan)
작성일
2013-03-19 16:40
조회수
5,892

예전에는 잘 쓰던 table인데 어느날 부터 속도가 너무 느려져서

분석해보니까 특정 필드를 넣으면 엄청 느려지네요

select a.1, a.2, a.3 from AAA a ;

select a.1, a.2 from AAA a;

이런식으로요 index도 아니고 그냥 조회만인데

SELECT STATEMENT   Cost = 29245
    TABLE ACCESS BY INDEX ROWID AAA 
        INDEX SKIP SCAN PK_AAA 


 SELECT STATEMENT   Cost = 42
    INDEX FAST FULL SCAN PK_AAA
 

이런식으로 plan도 이상하게 변경이 되네요 

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

플랜의 차이는 random access 검색

 

채용근(taiji97)님이 2013-03-19 17:48에 작성한 댓글입니다.

위 아래의 플랜을 비교해 보면

밑의 Plan 은 인덱스만으로 데이타 검색이 끝남으로 인해 빠른 처리가 가능 했으나 위의 쿼리에서 특정 필드를 추가함으로써 인덱스 스캔후 Table Access가 일어 남으로 인하여 속도가 저하는 되는것입니다.

데이타를 많이 가져오거나 데이타가 많은 테이블에서 Select를 하는 경우에 index를 타고 그 인덱스에 의하여 Table Access를 하게 되면 많은 속도 저하를 가져오게 됩니다.

예를 들자면 10억건 데이타에서 조건에 의하여 100만건을 가져온다고 했을경우

플랜이 인덱스만 타면 한 30분인데 인덱스후 Table Access를 하게 되면 10시간에도 안끝나는 경우가 있습니다.

이럴경우에는 차라리 인덱스 안타고 Full로 타는게 더 좋습니다.

 

상황에 따라 다르겠지만 님의 경우 제일 좋은건 인덱스에 1,2,3 으로 타는게 제일 좋은거 같고여, 인덱스 생성이 불가하다면 힌트에 /*+ FULL(a) */ 주고 테스트 해 보시기 바랍니다.

 

 

이정재(ljjang)님이 2013-03-20 20:47에 작성한 댓글입니다.
이 댓글은 2013-03-20 20:49에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
40067코드변환 도움 요청..ㅠ [1]
김동길
2013-03-20
5383
40066Oracle 함수 Function을 만들어보려 합니다.
새하정
2013-03-20
5235
40065테이블명,컬럼명에 " "(따옴표)가 들어가있는경우 [3]
오석균
2013-03-20
6564
40064select 조건에 특정 field를 추가하면 속도가 느려지네요 [2]
최덕환
2013-03-19
5892
40063fnSystemFlag 이건뭔가요?ㅜㅜ [2]
박재은
2013-03-19
5312
40062질문입니다 [1]
우제훈
2013-03-19
5040
40061LOB INDEX RENAME 은 불가능 한간가요?
공돌이
2013-03-19
5047
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다