04.IT Knowledge/RDBMS2007. 5. 7. 15:15
 SyBase IQ(이하 IQ)에 대한 짧은 소감.

 IQ는 써본 사람들은 알겠지만, 컬럼 기반의 DB이다.
 IQ는 DB로서 안정성은 다소 떨어지는 것처럼 보이지만, 이 컬럼 기반이라는 것이 어떤
장점을 지니고 있는지 짧게 기술해 보겠다.

 1. Group by 가 살인적으로 빠르다.
  -- 물론 Index가 없으면 빠르지 않겠지만(실제로 상당히 느렸다.), IQ에서 권장하는
    Index를 설정한 경우, Group by 함수(count/sum/min/max 등)의 수행속도는 ....정말
    타DB랑 비교가 안될 정도로 빠르다. ^^/b

 2. Join보다는 update방식의 SQL 수행
  -- 예를 들어 아래와 같은 SQL이 있다고 하자.
      아래의 예는 TABLE2에 있는 고객번호에 해당하는 ROW만 TABLE1에서 COL1기준
    으로 건수를 보는 것이다.
 ********************************  예 1 ******************************************
   SELECT COL2, COUNT(*)
     FROM TABLE1 A
    WHERE EXISTS (SELECT 1
                    FROM TABLE2 B
                   WHERE A.COL1 = B.COL1)
    GROUP BY COL2;
 ******************************************************************************************
      음...위와 같은 SQL을 IQ에서 실행하면, 건수에 따라 다르겠지만 식사를 하고, 차를
     한잔하고 자리에 오면 혹시 수행을 마쳤을 지도 모른다....ㅡ.ㅡ;;;
      위와 같은 SQL을 아래처럼 수행해 보자.
 ********************************  예 2 ********************************************
   SELECT COL1
        , COL2
        , 0    AS FLAG
     INTO #ZZZ
     FROM TABLE1;

   UPDATE #ZZZ   A
      SET A.FLAG = 1
     FROM TABLE2  B
    WHERE A.COL1 = B.COL1;

   SELECT COL2
        , COUNT(*)
     FROM #ZZZ
    WHERE FLAG = 1
    GROUP BY COL2;
 ******************************************************************************************
      위와 같이 수행하면, 예1보다 압도적으로 빠른 실행 시간을 확인할 수 있을 것이다.

 짧은 예시 그리고 간단한 예시이지만, IQ는 컬럼 베이스의 UPDATE방식의 SQL을
작성하므로, 내가 보기에는 초보자에게 적당하며, 구현된 고객사에서의 기능 자체가
DW/DM 쪽이므로 테이블의 구성이 비교적 단순하며, JOIN이 적게 일어나게끔 설계되어있다.
 그러므로, IQ에서 SQL을 구현할 때는
 1. 최종적으로 구할 모수집단을 구하고, 그 모수를 기반으로 컬럼값이 초기화 된 형태의
  TEMP 테이블을 만들고...
 ******************************************************************************************
   SELECT COL1
        , COL2
        , CONVERT(INT,0)              AS COL3
        , CONVERT(NUMERIC(18,0),0)    AS COL4
        , CONVERT(CHAR(400),'')       AS COL5
        , CONVERT(VARCHAR(400),'')    AS COL6
     INTO #ZZZ
     FROM TABLE1;
 ******************************************************************************************
 2. UPDATE에 의한 JOIN을 기반으로 작성해 나가면 된다.

 그럼...
 즐프 하시라~~
Posted by 아주 오래된 미래