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 40572 게시물 읽기
No. 40572
inline view에서 인덱스가 가능할까요?
작성자
사이살리스
작성일
2014-09-17 11:37
조회수
7,022

SELECT *
FROM(
          SELECT * FROM A 
          UNION
          SELECT * FROM B
)       RESULT
 

SELECT * FROM A 
UNION
SELECT * FROM B

 이 쿼리가 3초걸린다면

SELECT *
FROM(
          SELECT * FROM A 
          UNION
          SELECT * FROM B
)       RESULT
인라인뷰로 묶은 쿼리는 4초

SELECT *
FROM(
          SELECT * FROM A 
          UNION
          SELECT * FROM B
)       RESULT
WHERE 조건 = ''
이렇게 조건을 주면 10초로 늘어나 버립니다.

인라인뷰에 인덱스를 걸수 있을까요?

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

뷰에 인덱스를 걸 수는 없지만...
뷰의 쿼리가 인덱스를 타도록 만들 수는 있습니다.


먼저 Union 과 Union All 의 차이를 이해하셔야 합니다.
Union 은 중복을 제거하고 정렬을 합니다.
Union All 은 단지 결과를 합칩니다.
대부분의 경우 Union All 을 필요로 하며, Union 은 특별한 경우가 아니면 잘 안쓰입니다.
그런데도 불구하고 Union All 을 사용해야 할 곳에
Union 을 사용하는 오류를 범하는 일이 흔한 일입니다.
Union All 이 쓰여야 할 곳에 Union 을 쓴 것은 아닌지? 확인해 보세요.


각 테이블에 조건에 해당하는 인덱스만 적절하게 존재한다면?
1. Union All 을 사용하는게 맞는 경우
  - Union All 로 바꾸시면 효과를 보실 듯 합니다.
2. Union 을 사용하는게 맞는 경우라면?
  - 일단 Union All 을 사용하여 인덱스 스캔후 추가로 Distinct 하는 방식으로.

마농(manon94)님이 2014-09-17 14:25에 작성한 댓글입니다.
이 댓글은 2014-09-17 14:27에 마지막으로 수정되었습니다.
[Top]
No.
제목
작성자
작성일
조회
40576clob 데이터 -> 가상테이블 record로 변환 가능하나여? [1]
박성준
2014-09-23
8052
40575PL/SQL 커서 구문 오류가 납니다.. [1]
salary1111
2014-09-22
7828
40574토드 clob데이터 import질문
야간비행
2014-09-21
7687
40572inline view에서 인덱스가 가능할까요? [1]
사이살리스
2014-09-17
7022
40570쿼리 질문 드려봅니다. [5]
야간비행
2014-09-15
7913
40569이 두쿼리의 결과가 왜 다른거죠...아우터조인시..
DBA희망자
2014-09-12
7396
40568VIEW에서 사용하고있는 TABLE명을 쿼리로 볼수있나요? [1]
질문
2014-09-11
7080
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.025초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다