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
운영게시판
최근게시물
Sybase Q&A 2219 게시물 읽기
No. 2219
조인시 어떤쿼리가 더 빠를가요?
작성자
천적
작성일
2008-05-10 11:04
조회수
8,413

1. 첫번재 질문
조인시 조건을 먼저 거는게 빠른가요? 아니면 조건을 뒤로 미루고 조인키값을 먼저 거는게 빠를까요?
아니면 차이가 없나요??(물론 건수가 얼마 없다면 차이가 없겠지만요...^^;; 테이블당 크기가 5~6기가라면... 분명 차이가 있을거 같아요... 실제 저희가 사용하는 테이블 크기가 저정도 입니다.ㅡㅡ;;)

select 
      a.* 
from 
      aaa a
    , bbb b
where 
      a.yn = 'Y'     --> 이걸 앞으로 빼는게 더 낫나요?
and a.no = b.no
and a.date = b.date




select 
      a.* 
from 
      aaa a
    , bbb b
where 
      a.no = b.no
and a.date = b.date
and a.yn = 'Y'          --> 뒤로 빼고 조인키값을 먼저 거는게 좋나요??

2. 두번째 질문
plan을 보는법을 좀 배우고 싶습니다. 혹시 여기 강좌나 아니면 보는 메뉴얼같은거...
(튜닝시 라든가 쿼리 비교시 봐야 할때가 있는대... 기껏해야 IO건수나 보고 실행시간이나 볼수 있을정도니...)
질문은 advantage에서 plan실행하는게 아니고 plan나온 문서를 보는 법을....^^;;

2번째껀 꼭 좀 답변이 있었으면 좋겠네요~~~^^;;

그럼 수고하세요~~~~

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

버전에 따라 다르긴 한데

set showplan on

set statistics io, time on 를 보통 많이 사용하고요.

15.0.2부턴

set statistics plancost on 도 가용가능합니다.

결과는 보지 않고 플랜만 보고 싶으시다면

 set noexec on 이것도 사용하시고요.

답변님이 2008-05-13 08:50에 작성한 댓글입니다. Edit

답변감사드립니다..^^;;

그런대 역시나 그 답변이 나올거 같아 미리 말씀드렸는대 showplan을 보기위한 질문이 아니고요

질문은 advantage에서 plan실행하는게 아니고 plan나온 문서를 보는 법을....^^;;

알려달라는 거라서요...^^;; 님께서 알려주신 그 방법은 알고는 있는 상황입니다.^^;;

그렇게 해서 나온 plan을 보는 법을 좀 설명해 주심 감샤 감샤...^^;;;

 

천적님이 2008-05-13 14:47에 작성한 댓글입니다. Edit

    STEP 1
        The type of query is SELECT.

        3 operator(s) under root

       |ROOT:EMIT Operator (VA = 3)
       |
       |   |NESTED LOOP JOIN Operator (VA = 2) (Join Type: Inner Join)
       |   |
       |   |   |SCAN Operator (VA = 0)
       |   |   |  FROM TABLE
       |   |   |  sales
       |   |   |  Using Clustered Index.
       |   |   |  Index : salesind
       |   |   |  Forward Scan.
       |   |   |  Positioning by key.
       |   |   |  Index contains all needed columns. Base table will not be read.
       |   |   |  Keys are:
       |   |   |    stor_id ASC
       |   |   |  Using I/O Size 4 Kbytes for index leaf pages.
       |   |   |  With LRU Buffer Replacement Strategy for index leaf pages.
       |   |
       |   |   |SCAN Operator (VA = 1)
       |   |   |  FROM TABLE
       |   |   |  abc
       |   |   |  Index : idx_abc
       |   |   |  Forward Scan.
       |   |   |  Positioning at index start.
       |   |   |  Index contains all needed columns. Base table will not be read.
       |   |   |  Using I/O Size 4 Kbytes for index leaf pages.
       |   |   |  With LRU Buffer Replacement Strategy for index leaf pages.

이것이 현재 set showplan 결과인데
VA 순서로 실행을 합니다 0, 1,2,3 이런식으로
0에선 클러스터 인덱스를 사용했고 
1에선 idx_abc 인덱스를 가용했고
2에서 이 결과를 inner 조인하고 
3에서 결과를 뿌려주는 것입니다.
이걸로 답변이 되셨는지 모르겠군요.

답변님이 2008-05-13 17:08에 작성한 댓글입니다. Edit

조건의 위치를 바꾸신다고



옵티마이져가 플랜을 달리 생성하지 않습니다.



사이베이스 옵티마이져는 코스트 베이스이므로 옵티마이져가 알아서 판단합니다.




가끔 위치 조정하면 인덱스를 타기도 하고 안타기도 하는데



update statistics를 안돌려주셨거나, 일종의 버그일수 있는데 위치를 안바꾸시고 



set forceplan on으로 설정 해도 될수 있습니다.

지연님이 2008-05-15 09:22에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
2222sybase 알바 하실 분 급구
이상동
2008-05-14
6938
2221감사합니다. [1]
sybase맨
2008-05-13
7108
2220Sybase 11.9 ASE 쓰고 있는데용. 다른서버 DB 링크해서 쓰려면 어떤 방법이 있는지요? [1]
싱그롬
2008-05-13
7108
2219조인시 어떤쿼리가 더 빠를가요? [4]
천적
2008-05-10
8413
2218group by좀 설명해 주세요...ㅜ.ㅜ [2]
천적
2008-05-10
7337
2217에러가...ㅠ.ㅠ [1]
sybase맨
2008-04-28
6805
2215부분합 구하는게 되나요? [1]
괜찮은사람
2008-04-28
7480
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다