Skip to main content

03A

About 1 minOracle DBcrashcourseoracleoracle-dboracle-sql

03A ๊ด€๋ จ


Hint

๊ธฐ๋ณธ ์‚ฌ์šฉ์˜ˆ

SELECT /*+ INDEX(idx_col1) */ 
  id, password, name
FROM 
  emp;

SELECT /*+ ORDERED  INDEX(b idx_col1) */ 
  id, password, name
FROM
  emp a, depart b

์ฃผ์˜: ์ฃผ์„ ํ‘œ์‹œ ๋’ค์— + ๊ธฐํ˜ธ๊ฐ€ ์žˆ๋‹ค


Hint ์œ ํ˜•

HintDescriptionUsage
INDEXINDEX๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์Šค์บ”INDEX(TABLE_name, INDEX_name)
INDEX_ASCINDEX๋ฅผ ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์Šค์บ”._
INDEX_DESCINDEX๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์Šค์บ”.INDEX_DESC(TABLE_name, INDEX_name)
INDEX_FFSINDEX FAST FULL SCANINDEX_FFS(TABLE_name, INDEX_name)
PARALLEL_INDEXINDEX PARALLEL SCANPARALLEL_INDEX(TABLE_name, INDEX_name)
NOPARALLEL_INDEXINDEX PARALLEL SCAN ์ œํ•œNOPARALLEL_INDEX(TABLE_name, INDEX_name)
AND_EQUALS์—ฌ๋Ÿฌ๊ฐœ์˜ INDEX MARGE ์ˆ˜ํ–‰AND_EQUALS(INDEX_name, INDEX_name)
FULLFULL SCAN ์ง€์ •๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ์ „์ฒด ์Šค์บ”.FULL(TABLE_name)
HINTDescriptionUsage
USE_NLNESTED LOOP JOIN ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ NESTED LOOP JOIN์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค. ๋จผ์ € ํŠน์ • TABLE์˜ ROW์— ์•ก์„ธ์Šคํ•˜๊ณ  ๊ทธ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋‹ค๋ฅธ TABLE์˜ ROW๋ฅผ ์ฐพ๋Š” ์ž‘์—…์„ ํ•ด๋‹น๋ฒ”์œ„๊นŒ์ง€ ์‹คํ–‰ํ•˜๋Š” ์กฐ์ธ.USE_NL(TABLE1, TABLE2)
USE_NL_WITH_INDEXINDEX๋ฅผ ์‚ฌ์šฉํ•ด์„œ NESTED LOOP JOIN์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.USE_NL_WITH_INDEX(TABLE INDEX)
USE_MERGESORT MERGE JOIN ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ SORT MERGE JOIN์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค. ๋จผ์ € ๊ฐ๊ฐ์˜ TABLE์˜ ์ฒ˜๋ฆฌ ๋ฒ”์œ„๋ฅผ ์Šค์บ”ํ•˜์—ฌ SORTํ•œ ํ›„, ์„œ๋กœ MERGEํ•˜๋ฉด์„œ JOINํ•˜๋Š” ๋ฐฉ์‹.USE_MERGE(TABLE1, TABLE2)
USE_HASHHASH JOIN ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ HASH JOIN์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•œ๋‹ค.USE_HASH(TABLE1, TABLE2)
HASH_AJHASH ANTIJOINHASH_AJ(TABLE1, TABLE2)
HASH_SJHASH SEMIJOINHASH_SJ(TABLE1, TABLE2)
NL_AJNESTED LOOP ANTIJOINNL_AJ(TABLE1, TABLE2)
NL_SJNESTED LOOP SEMIJOINNL_SJ(TABLE1, TABLE2)
MERGE_AJSORT MERGE ANTIJOINMERGE_AJ(TABLE1, TABLE2)
MERGE_SJSORT MERGE SEMIJOINMERGE_SJ(TABLE1, TABLE2)

JOIN์‹œ DRIVING ์ˆœ์„œ ๊ฒฐ์ • HINT

| HINT | Description | Usage | | ORDERED | FROM์ ˆ์— ๋ช…์‹œ๋œ ํ…Œ์ด๋ธ”์˜ ์ˆœ์„œ๋Œ€๋กœ DRIVING | _ | | LEADING | ํŒŒ๋ผ๋ฏธํ„ฐ์— ๋ช…์‹œ๋œ ํ…Œ์ด๋ธ”์˜ ์ˆœ์„œ๋Œ€๋กœ JOIN | LEAING(TABLE_name1, TABLE_name2, ...) | | DRIVING | ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ๋จผ์ € DRIVING | DRIVING(TABLE) |

Misc. HINT

| HINT | Description | Usage | | APPEND | INSERT์‹œ DIRECT LOADING | _ | | PARALLEL | SELECT, INSERT์‹œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ”„๋กœ์„ธ์Šค๋กœ ์ˆ˜ํ–‰ | PARALLEL(TABLE, ๊ฐœ์ˆ˜) | | CACHE | ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— CACHING | _ | | NOCACHE | ๋ฐ์ดํ„ฐ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— CACHINGํ•˜์ง€ ์•Š์Œ | _ | | PUSH_SUBQ | SUBQUERY๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ | _ | | REWRITE | QUERY REWRITE ์ˆ˜ํ–‰ | _ | | NOREWIRTE | QUERY REWRITE๋ฅผ ์ˆ˜ํ–‰ ๋ชปํ•จ | _ | | USE_CONCAT | IN์ ˆ์„ CONCATENATION ACCESS OPERATION์œผ๋กœ ์ˆ˜ํ–‰ | _ | | USE_EXPAND | IN์ ˆ์„ CONCATENATION ACCESS OPERATION์œผ๋กœ ์ˆ˜ํ–‰๋ชปํ•˜๊ฒŒ ํ•จ | _ | | MERGE | VIEW MERGING ์ˆ˜ํ–‰ | _ | | NO_MERGE | VIEW MERGING ์ˆ˜ํ–‰๋ชปํ•˜๊ฒŒ ํ•จ | _ | | ALL_ROWS | ๊ฐ€์žฅ ์ข‹์€ ๋‹จ์œ„ ์ฒ˜๋ฆฌ๋Ÿ‰์˜ ๋ชฉํ‘œ๋กœ ๋ฌธ ๋ธ”๋ก์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด cost-based ์ ‘๊ทผ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (์ฆ‰, ์ „์ฒด์ ์ธ ์ตœ์†Œ์˜ ์ž์› ์†Œ๋น„, ๋ชจ๋“  ๋ ˆ์ฝ”๋“œ์˜ ์ฒ˜๋ฆฌํ•˜๋Š” ์‹œ๊ฐ„์˜ ์ตœ์†Œํ™”๋ฅผ ๋ชฉ์ ์œผ๋กœ ์ตœ์ ํ™”) | _ | | FIRST_ROWS | ๊ฐ€์žฅ ์ข‹์€ ์‘๋‹ต ์‹œ๊ฐ„์˜ ๋ชฉํ‘œ๋กœ ๋ฌธ ๋ธ”๋ก์„ ์ตœ์ ํ™”ํ•˜๊ธฐ ์œ„ํ•ด cost-based ์ ‘๊ทผ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. (์ฒซ๋ฒˆ์งธ ๋ ˆ์ฝ”๋“œ์˜ ์ถ”์ถœ ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•  ๋ชฉ์ ์œผ๋กœ ์ตœ์ ํ™”) | _ | | CHOOSE | ์ตœ์ ์ž(optimizer)๊ฐ€ ๊ทธ ๋ฌธ์— ์˜ํ•ด ์ ‘๊ทผ๋œ ํ…Œ์ด๋ธ”์„ ์œ„ํ•ด ํ†ต๊ณ„์˜ ์กด์žฌ์— ๊ทผ๊ฑฐ๋ฅผ ๋‘๋Š” SQL๋ฌธ์„ ์œ„ํ•ด rule-based ์ ‘๊ทผ ๋ฐฉ๋ฒ•๊ณผ cost-based ์ ‘๊ทผ ๋ฐฉ๋ฒ• ์‚ฌ์ด์— ์„ ํƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. | _ | | CLUSTER | ์ง€์ •๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํด๋Ÿฌ์Šคํ„ฐ ์Šค์บ”. | _ | | HASH | ์ง€์ •๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ํ•ด์‰ฌ ์Šค์บ”. | _ | | ROWID | ์ง€์ •๋œ ํ…Œ์ด๋ธ”์— ๋Œ€ํ•œ ROWID์— ์˜ํ•œ ํ…Œ์ด๋ธ” ์Šค์บ”. | _ | | RULE | explicitlly chooses rule-based optimization for a statement block. rule-base Optimizer๋ฅผ ์‚ฌ์šฉ | _ |


References