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 39613 게시물 읽기
No. 39613
어떤 쿼리가 나은건지 봐 주세요~
작성자
마루아라(maruara)
작성일
2012-08-31 09:36ⓒ
2012-08-31 13:18ⓜ
조회수
4,271

아래 테이블이 두개 있는데요

TABLE1 에는 데이터가 좀 많이 있어서 조건절에 항상 일자가 (FROM ~ TO)가 들어갑니다.

TABLE2에도 어느정도 데이터가 있고 암호화필드(SEC_FIELD1)가 들어있어서 암호화필드에 대해 검색

조건이 들어갈경우 복호화(SEC_DECODE_UTF8) 함수를 사용하여 비교해야 하는데요

 

1. 복호화하기전에 TABLE2의 데이터를 줄이기 위해 TABLE1과 먼저 조인하여 TABLE1의 일자만큼 제외한 후 나온 데이터로 복호화하여 비교하는게 맞을까요? 이런 경우 TABLE1을 쿼리에 두번 쓰게 되는것 같아서요.

 

2. 아니면 빨간색 부분처럼 IN절 SUBQUERY안에 조건을 줄 경우 1번 방법과 속도가 같을지 아니면 SUBQUERY가 먼저 풀려 빨간색 부분 자체가 필요가 없는건지요? (IN 대신 EXISTS를 사용해도 같을지요?)

 

3. 더 나은 방법이 있으면 조언 부탁드립니다.

 

SELECT *
  FROM TABLE1 A
WHERE A.DATE BETWEEN '20120820' AND '20120831'
    AND A.SEQ IN (SELECT SEQ
                                     FROM TABLE2
                                 WHERE SEC_DECODE_UTF8(SEC_FIELD1) LIKE '가나다%'
                                        AND SEQ = B.SEQ
                                 )

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

다양한 쿼리를 작성해

plan을 확인해 보세요.

index나 테이터양에 따라

어느 경우가 나을지 달라지기 때문에...

 

박인호(paerae)님이 2012-08-31 15:14에 작성한 댓글입니다.

 1번이 유리 할 것으로 보입니다.

복호화 비교 보다,  조건절으로 암호화 해서 암호화로 비교하는게 효과적입니다.

 

tohappy(tohappy)님이 2012-09-10 15:53에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
39616핫백업 파일로 다른서버로 복구하기 [3]
스테파노
2012-08-31
4850
39615오라클 접속오류 확인 부탁드립니다. 고수님들
구은호
2012-08-31
3929
39614오라클 데이터를 SPOOL SELECT를 안쓰고 CSV로 빠르게 만들수 있나요 [1]
select
2012-08-31
5130
39613어떤 쿼리가 나은건지 봐 주세요~ [2]
마루아라
2012-08-31
4271
39612통계성 쿼리 2번째 질문 [3]
쿼리 초보
2012-08-30
4250
39610프로시저 속도 문제.. [3]
햇살한조각
2012-08-30
4550
39609sum() over () 질문드립니다. [1]
정성태
2012-08-29
4090
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다