 |
Á¦¸ñ ¾øÀ½
Äõ¸® 1)
SELECT B.DEPARTMENT_ID
,
B.PARENT_DEPARTMENT_ID
, A.ORG_ID
FROM (
SELECT P.PROJECT_ID
,
P.ORG_ID
FROM PROJECT P
WHERE UPPER(P.PROCESS_TYPE)
= 'CASE4'
AND P.PROJECT_STATUS NOT
IN ('¹ÌÈ®ÀÎ', 'ȸ°èÁ¾·á', '°Á¦Á¾·á', '¼ö±ÝÁ¾·á', 'ºñ¿ëó¸®Á¾·á')
AND SUBSTR(P.PROJECT_CODE,
5, 1) < 'A'
) A, (
SELECT DEPARTMENT_ID
,
PARENT_DEPARTMENT_ID
,
DEPARTMENT_LEVEL
,
DEPARTMENT_CODE
,
DEPARTMENT_NAME
,
ALIVE_DATE
,
ALIAS_DEPARTMENT_NAME
,
SORT
FROM (
SELECT
LTRIM(SYS_CONNECT_BY_PATH(DEPARTMENT_NAME, '^'), '^') SYS_DEPT_NM
,
DEPARTMENT_LEVEL
,
DEPARTMENT_CODE
,
DEPARTMENT_ID
,
DEPARTMENT_NAME
,
ALIVE_DATE
,
PARENT_DEPARTMENT_ID
,
ALIAS_DEPARTMENT_NAME
,
SUBSTR(DEPARTMENT_CODE, 1, 2) || DECODE(SUBSTR(DEPARTMENT_CODE, 3, 4), 'AA',
'1', SUBSTR(DEPARTMENT_CODE, 3, 4)) SORT
FROM
ORGANIZATION
WHERE
ALIVE_DATE > SYSDATE
START
WITH PARENT_DEPARTMENT_ID IS NULL
CONNECT
BY PRIOR DEPARTMENT_ID = PARENT_DEPARTMENT_ID
)
WHERE PARENT_DEPARTMENT_ID
IS NOT NULL
) B
WHERE A.ORG_ID = B.DEPARTMENT_ID
B Å×ÀÌºí¿¡ ´ëÇØ ÀζóÀÎºä ¾È¿¡ ¶Ç ÀζóÀκ並
¾´ ÀÌÀ¯´Â SYS_DEPT_NM Ä®·³À» ´Ù½Ã °¡°øÇÏ¿©¾ß Çϱ⠶§¹®ÀÔ´Ï´Ù.
Äõ¸® 2)
SELECT B.DEPARTMENT_ID
,
B.PARENT_DEPARTMENT_ID
, A.ORG_ID
FROM (
SELECT P.PROJECT_ID
,
P.ORG_ID
FROM PROJECT P
WHERE UPPER(P.PROCESS_TYPE)
= 'CASE4'
AND P.PROJECT_STATUS NOT
IN ('¹ÌÈ®ÀÎ', 'ȸ°èÁ¾·á', '°Á¦Á¾·á', '¼ö±ÝÁ¾·á', 'ºñ¿ëó¸®Á¾·á')
AND SUBSTR(P.PROJECT_CODE,
5, 1) < 'A'
) A, (
SELECT
LTRIM(SYS_CONNECT_BY_PATH(DEPARTMENT_NAME, '^'), '^') SYS_DEPT_NM
,
DEPARTMENT_LEVEL
,
DEPARTMENT_CODE
,
DEPARTMENT_ID
,
DEPARTMENT_NAME
,
ALIVE_DATE
,
PARENT_DEPARTMENT_ID
,
ALIAS_DEPARTMENT_NAME
,
SUBSTR(DEPARTMENT_CODE, 1, 2) || DECODE(SUBSTR(DEPARTMENT_CODE, 3, 4), 'AA',
'1', SUBSTR(DEPARTMENT_CODE, 3, 4)) SORT
FROM
ORGANIZATION
WHERE
ALIVE_DATE > SYSDATE
START
WITH PARENT_DEPARTMENT_ID IS NULL
CONNECT
BY PRIOR DEPARTMENT_ID = PARENT_DEPARTMENT_ID
) B
WHERE A.ORG_ID = B.DEPARTMENT_ID
Á¦°¡ Äõ¸® 1), Äõ¸® 2)·Î ³ª´©¾î Å×½ºÆ®ÇØ º» ÀÌÀ¯´Â ÁßøµÇ°Ô ÀζóÀÎ ºä¸¦ »ç¿ëÇÒ °æ¿ì ALIVE_DATE > SYSDATE·Î ÇÊÅ͸µ
µÇ¾î ³ª¿Â °á°ú°¡ ´Ù¸£°Ô Ãâ·ÂÀÌ µÇ´Â °ÍÀ» ¹ß°ßÇÏ¿´±â ¶§¹®ÀÔ´Ï´Ù.
ÀζóÀÎ ºä¸¦ ÁßøµÇ°Ô »ç¿ëÇÏÁö ¾ÊÀº Äõ¸®2)ÀÇ °æ¿ì ALIVE_DATE > SYSDATE
Á¶°ÇÀÇ °á°ú¿Í ÇÔ²² AÅ×À̺í°ú Á¶ÀÎµÇ¾î ¿øÇÏ´Â °á°ú°¡ Ãâ·ÂµÇÁö¸¸, ÁßøµÇ°Ô »ç¿ëÇÏ¿´À» °æ¿ì¿¡´Â A Å×ÀÌºí¿¡ ÀÖ´Â °ªµé°ú Á¶ÀÎÀÌ µÇ¸é¼
B Å×ÀÌºí¿¡ ÀÖ´Â
ALIVE_DATE > SYSDATE Á¶°ÇÀÌ ¹«½ÃµÈ ä·Î ±¸Á¶Á÷ÀÌ Æ÷ÇÔµÇ¾î ³ª¿Í ¹ö¸®°í ÀÖ¾î¼
ÀÔ´Ï´Ù.
ÀζóÀκ並 ÁßøµÇ°Ô »ç¿ëÇÏ¸é ½ÇÇàÀÇ
¼ø¼¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â Áö¿ä?
Execution Plan
--------------------------------------------------------------------------------
0 SELECT STATEMENT Optimizer=ALL_ROWS
(Cost=150 Card=1 Bytes=79)
1 0 HASH JOIN (Cost=150 Card=1
Bytes=79)
2 1 TABLE ACCESS
(FULL) OF 'PROJECT' (TABLE) (Cost=128 Card=1 Bytes=36)
3 1 VIEW (Cost=21
Card=3 Bytes=129)
4 3 CONNECT
BY (WITH FILTERING)
5 4 TABLE
ACCESS (FULL) OF 'ORGANIZATION' (TABLE) (Cost=21 Card=6 Bytes=228)
6 4 HASH
JOIN
7 6 CONNECT
BY PUMP
8 6 TABLE
ACCESS (FULL) OF 'ORGANIZATION' (TABLE) (Cost=21 Card=3 Bytes=60)
9 4 TABLE
ACCESS (FULL) OF 'ORGANIZATION' (TABLE) (Cost=22 Card=3K Bytes=83K)
ÀÚ¼¼ÇÑ ´äº¯ÀÌ Èûµé´Ù¸é, À§ ½ÇÇà°èȹ ºÐ¼®¸¸ÀÌ¶óµµ Á¶¾ð ºÎʵ右´Ï´Ù. ½ÇÇà°èȹ¿¡
´ëÇÑ ºÐ¼® ´É·ÂÀÌ Âª´Ùº¸´Ï...
À§ »çÇ׿¡ ´ëÇÑ ¹®Á¦ ÇØ°áÀº ÁßøµÈ ÀζóÀκäÀÇ ¹Ù±ùÂÊ¿¡ WHERE PARENT_DEPARTMENT_ID
IS NOT NULL and alive_date > sysdate¸¦ Çѹø ´õ Ãß°¡ÇØ ÁÜÀ¸·Î½á ÇØ°áÀº
ÇßÁö¸¸, ÀÌ ±âȸ¿¡ ÀζóÀÎ ºä »ç¿ë ¿ø¸®¿¡ ´ëÇÑ ÀÌÇØ¸¦ Á¦´ë·Î ¾ò°í ½Í½À´Ï´Ù.
|