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 40267 게시물 읽기
No. 40267
최근 한건 조회 쿼리에서 order by 정려에서 막혔습니다.
작성자
쌈창(ssamchang)
작성일
2013-09-25 20:49
조회수
5,914

SELECT *

FORM (

           SELECT 조회내용

           FROM 테이블

           WHERE 조건1 = '100'

               AND 조건2 = '100100'

          ORDER BY SEQ_NO DESC

       )

WHERE ROWNUM = 1

 

현재 이런식으로 되있습니다.

SEQ_NO는 PK이고요 테이블에는 천만건 정도 있는것 같고요

 

근데 쿼리가 어쩔때는 잘되고 어쩔때는 조회 안되고 타임아웃?? 같이 막힙니다....

 

조건 1, 2에따라 여러 군데서 쓰고있는데요 

저런식으로 정렬을 하면 조건1,2에 조회된걸 조회하는게 아니고 정렬후 조회가 되는건가요?

 

왠지 조건 1,2에 해당안되는 다른 곳에서 사용 하는 ROW에 커밋이 안되고 작업중이게 있는데 정렬하다가 막히는거 아닌가해서요

ORDER BY 를 안하면 저조건에 해당되는게 잘 조회가 됩니다.

 

아직 쿼리에대해 잘 아는게 없어서 너무 답답합니다.. 

쿼리자체가 근본적으로 문제가 있는건지요...

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

위 SQL의 최적의 인덱스는 (조건1, 조건2, seq_no)입니다.
이러한 인덱스가 있다면 1건만 읽고 멈추게 됩니다.
이러한 인덱스가 없을 경우 여러가지 가능성이 있을 수 있는데요.


조건1 또는 조건2에 대한 인덱스 혹은 두개의 결합인덱스가 있어서
이를 이용하는 경우 인덱스 스캔 후 정렬하여 결과를 도출합니다.
인데스 스캔 결과 건수가 적다면 별 문제 없구요
건수가 많아지면 테이블 랜덤엑세스 부하 및 정렬에 대한 부하가 발생됩니다.


조건에 대한 인덱스가 없는 경우엔 두가지 방식을 생각할 수 있습니다.
테이블 풀스캔하면서 조건을 필터로 걸고 정렬하는 방법
- 이 경우 풀스캔 부하는 어쩔 수 없구요
- 필터되는 결과건수에 따라 정렬부하가 달라집니다.
PK 인덱스 역스캔 > 테이블 랜덤엑세스 > 필터 > 출력 하는 방법(정렬없음)
- 이 경우 정렬에 대한 부하는 없으나
- 조건을 만족하는 자료 1건을 찾을 때까지 랜덤엑세스 부하가 계속됩니다.
- 따라서 pk인덱스 뒷쪽에 만족하는 데이터가 있다면 빠른 속도가 나오지만.
- pk인덱스 맨 앞쪽에 만족하는 데이터가 있다면
- 전체자료를 랜덤엑세스하는 엄청난 부하가 발생됩니다.(테이블풀스캔보다 느림)

마농(manon94)님이 2013-09-26 09:56에 작성한 댓글입니다.
이 댓글은 2013-09-26 09:57에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
40270오라클 함수 인자를 가변적으로 하는 방법 [1]
기차
2013-09-27
6426
40269case 구문을 만들려구하는데요. [1]
DB란?
2013-09-26
6049
40268쿼리로그 남기기 sql로그 [1]
전성진
2013-09-25
6207
40267최근 한건 조회 쿼리에서 order by 정려에서 막혔습니다. [1]
쌈창
2013-09-25
5914
40266SORT ORDER BY STOPKEY 와 SORT ORDER BY의 결과가 다를수 있나요? [3]
윤재선
2013-09-25
6320
40264로깅 관련 트리거 사용 질문입니다.
게스트
2013-09-25
5590
40263row를 가변으로 만들기? [1]
이기자
2013-09-23
6002
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.023초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다