๐Ÿ‘จโ€๐Ÿ’ป I/O ํŠœ๋‹์˜ ํ•ต์‹ฌ ์›๋ฆฌ

 

1. I/O ํŠœ๋‹์˜ ํ•ต์‹ฌ ์›๋ฆฌ

๐Ÿ’ก Sequential Access ์„ ํƒ๋„ ๐Ÿ‘†

๐Ÿ’ก Random Access ๋ฐœ์ƒ๋Ÿ‰ ๐Ÿ‘‡

2. Ramdom Access ์ตœ์†Œํ™” ํŠœ๋‹

2.1 ์ธ๋ฑ์Šค์— ์ปฌ๋Ÿผ ์ถ”๊ฐ€

--==============================
--          ํŠœ๋‹ ์ „
--==============================
-- ์ธ๋ฑ์Šค: GENDER, SAL
WHERE EMP
  AND GENDER = :gender -- Man
  AND DNAME  = :dname  -- 10(Accounting)

--==============================
--          ํŠœ๋‹ ํ›„
--==============================
-- ์ธ๋ฑ์Šค: GENDER, SAL, DNAME
WHERE EMP
  AND GENDER = :gender -- Man
  AND DNAME  = :dname  -- 10(Accounting)

2.2 ๏ธ์ธ๋ฑ์Šค๋งŒ ์ฝ๊ณ  ์ฒ˜๋ฆฌ

SELECT ์ปฌ๋Ÿผ๊ณผ WHERE ์ปฌ๋Ÿผ์ด ๋ชจ๋‘ ์ธ๋ฑ์Šค์— ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋งŒ ์ฝ์–ด(Index Only Scan) ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

(๋‹ต์•ˆ์œผ๋กœ ์ œ์ถœํ•  ๊ฒฝ์šฐ ๊ฐ์  ์š”์ธ)

2.3 IOT์™€ Cluster Index

Oracle์˜ IOT(Index Organized Table)๋Š” Table Random Access๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋กœ ์ƒ์„ฑ๋œ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

1) ํฌ๊ธฐ๊ฐ€ ์ž‘๊ณ  NL Join์œผ๋กœ ๋ฐ˜๋ณต Lookupํ•˜๋Š” ํ…Œ์ด๋ธ” 2) ํญ์ด ์ข๊ณ  ๊ธด ํ…Œ์ด๋ธ” 3) ๋„“์€ ๋ฒ”์œ„๋ฅผ ์ฃผ๋กœ ๊ฒ€์ƒ‰ํ•˜๋Š” ํ…Œ์ด๋ธ” 4) ๋ฐ์ดํ„ฐ ์ž…๋ ฅ๊ณผ ์กฐํšŒ ํŒจํ„ด์ด ์„œ๋กœ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์žฅ์  ๋‹จ์ 
C.F๊ฐ€ ์ข‹์Œ ์žฆ์€ DML ์ž‘์—… ์‹œ ์ธ๋ฑ์Šค ๋ถ„ํ• ๋กœ ๋ถ€ํ•˜ ๋ฐœ์ƒ
Random Access ๋ฐฉ์‹์ด ์•„๋‹Œ Sequential Access ๋ฐฉ์‹์œผ๋กœ ๋„“์€ ๋ฒ”์œ„ ๊ฒ€์ƒ‰ ์‹œ ์œ ๋ฆฌํ•จ Direct Path Insert ๋ถˆ๊ฐ€๋Šฅ
PK ์ธ๋ฑ์Šค๋ฅผ ์œ„ํ•œ ๋ณ„๋„์˜ ์„ธ๊ทธ๋จผํŠธ ์ƒ์„ฑ์ด ๋ถˆํ•„์š”ํ•จ -
์˜ค๋ผํด์˜ IOT
https://slideplayer.com/

SQL Server์˜ Cluster Index๋Š” ํ‚ค ๊ฐ’์ด ๋™์ผํ•œ ๋ ˆ์ฝ”๋“œ๋“ค์„ ํ•œ ๋ธ”๋ก์— ๋ชจ์ด๋„๋ก ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
ํ•œ ๋ธ”๋ก์— ๋ชจ๋‘ ๋‹ด๊ธฐ ํž˜๋“  ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ธ”๋ก์„ ํ• ๋‹นํ•˜์—ฌ ์ฒด์ธ์œผ๋กœ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
Cluster Index๋Š” ๋„“์€ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์— ๋งค์šฐ ์œ ๋ฆฌ(C.F ์ข‹์Œ)ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ž์ฃผ ์ž…๋ ฅ๋˜๊ฑฐ๋‚˜, ์ˆ˜์ •์ด ์ž์ฃผ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ ๋ถ€ํ•˜๊ฐ€ ๊ทน์‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SQL Server์˜ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค
https://www.sqlservercentral.com/

3 Sequential Access ์„ ํƒ๋„ ํŠœ๋‹

  1. ์ธ๋ฑ์Šค ๋งค์นญ๋„: ๋น„๊ต ์—ฐ์‚ฐ์ž ์ข…๋ฅ˜์™€ ์ปฌ๋Ÿผ ์ˆœ์„œ์— ๋”ฐ๋ฅธ ์ธ๋ฑ์Šค ๋ ˆ์ฝ”๋“œ์˜ ๊ตฐ์ง‘์„ฑ
  2. ์ธ๋ฑ์Šค ๋งค์นญ๋„: ์ธ๋ฑ์Šค ์„ ํ–‰ ์ปฌ๋Ÿผ์ด ๋“ฑ์น˜(=) ์กฐ๊ฑด์ด ์•„๋‹ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ๋น„ํšจ์œจ (์ธ๋ฑ์Šค ๋งค์นญ๋„)
  3. BETWEEN ์กฐ๊ฑด์„ IN-LIST๋กœ ๋ณ€๊ฒฝํ–ˆ์„ ๊ฒฝ์šฐ ์Šค์บ” ํšจ์œจ์„ฑ
  4. Index Skip Scan์„ ์ด์šฉํ•œ ๋น„ํšจ์œจ ํ•ด์†Œ
  5. ๋ฒ”์œ„ ์กฐ๊ฑด ๋‚จ์šฉ์˜ ๋ฌธ์ œ์ 
  6. ๋™์ผ ์ปฌ๋Ÿผ์— ๋‘ ๊ฐœ์˜ ๋ฒ”์œ„ ์กฐ๊ฑด ์‚ฌ์šฉ ์‹œ ์œ ์˜์‚ฌํ•ญ
  7. BETWEEN๊ณผ LIKE ๋น„๊ต
  8. ์„ ๋ถ„ ์ด๋ ฅ์˜ ์ธ๋ฑ์Šค ์Šค์บ” ํšจ์œจ
  9. Access Predicate์™€ Filter Predicate
  10. Index Fragmentation

3.1 ์ธ๋ฑ์Šค ๋งค์นญ๋„

๊ฒฐํ•ฉ ์ธ๋ฑ์Šค ์šฐ์„  ์ˆœ์œ„: ์‚ฌ์šฉ ๋นˆ๋„, ๋“ฑ์น˜ ์กฐ๊ฑด, ๋ถ„ํฌ๋„, Sort ์—ฐ์‚ฐ ๋Œ€์ฒด
WHERE ์ ˆ์—์„œ ์„ ๋‘ ์ปฌ๋Ÿผ๋ถ€ํ„ฐ ์—ฐ์†๋œ ํ›„ํ–‰ ์ปฌ๋Ÿผ์— ๋Œ€ํ•˜์—ฌ equal(=) ๋˜๋Š” IN ์กฐ๊ฑด์œผ๋กœ ๋น„๊ตํ•  ๊ฒฝ์šฐ ๋งค์นญ๋„๋Š” ๋†’์•„์ง€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
equal(=) ๋˜๋Š” IN ์กฐ๊ฑด์ด ์•„๋‹Œ ์กฐ๊ฑด ์ดํ›„๋Š” ๋ฌด์กฐ๊ฑด Check ์กฐ๊ฑด์ด ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ๋งค์นญ๋„
WHERE GENDER = โ€˜Mโ€™ AND DNAME = 10

์ธ๋ฑ์Šค ๋งค์นญ๋„

3.2 BETWEEN ์กฐ๊ฑด์„ IN-LIST๋กœ ๋ณ€๊ฒฝํ–ˆ์„ ๊ฒฝ์šฐ ์Šค์บ” ํšจ์œจ์„ฑ

IN-LIST๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ์˜ ์ฃผ์˜์‚ฌํ•ญ

  1. IN-LIST ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ์ˆ˜์ง์  ํƒ์ƒ‰์ด IN-LIST ๊ฐœ์ˆ˜ ๋งŒํผ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ๋ฑ์Šค์˜ ๋†’์ด๊ฐ€ ๋†’์œผ๋ฉด ๋ถˆ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฒดํฌ ์กฐ๊ฑด ์•ž์˜ ์ปฌ๋Ÿผ๋“ค์˜ ๋ณ€๋ณ„๋ ฅ์ด ์ข‹์„ ๊ฒฝ์šฐ BETWEEN ์กฐ๊ฑด์ด ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Between๊ณผ IN-List

Between๊ณผ IN-List

3.3 Index Skip Scan์„ ์ด์šฉํ•œ ๋น„ํšจ์œจ ํ•ด์†Œ

์ธ๋ฑ์Šค ์„ ๋‘ ์ปฌ๋Ÿผ์˜ Distinct๊ฐ€ ๋‚ฎ๊ณ  ํ›„ํ–‰ ์ปฌ๋Ÿผ์˜ Cardinality๊ฐ€ ๋†’์„ ๋•Œ ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.4 ๋ฒ”์œ„ ์กฐ๊ฑด ๋‚จ์šฉ์˜ ๋ฌธ์ œ์ 

๋Œ€๋Ÿ‰์˜ ํ…Œ์ด๋ธ”์„ ๋„“์€ ๋ฒ”์œ„๋กœ ๊ฒ€์ƒ‰ํ•  ๋•Œ๋Š” ์ธ๋ฑ์Šค Sequential Scan ๋น„ํšจ์œจ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๋ถ„ํฌ๋„์— ๋”ฐ๋ผ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์— ์‚ฌ์šฉํ•  ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ณ ๋ฅผ ํ•„์š”์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

-- ์ฃผ๋ฌธ์ผ์ž ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ์šฐ
SELECT PROD_CD
      , ORDER_DATE
      , ORDER_TYPE
FROM   ORDER
WHERE  PROD_CD    = :PROD_CD
  AND  ORDER_DATE = :ORDER_DATE
  AND  ORDER_TYPE = :ORDER_TYPE;

-- ์ฃผ๋ฌธ์ผ์ž ์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ
SELECT PROD_CD
      , ORDER_DATE
      , ORDER_TYPE
FROM   ORDER
WHERE  PROD_CD    = :PROD_CD
  AND  ORDER_TYPE = :ORDER_TYPE;

-- ๊ฐœ๋ฐœ์ž์˜ ํŽธ์˜์— ์˜ํ•ด ORDER_DT ์กฐ๊ฑด์„ LIKE๋กœ ์ฒ˜๋ฆฌ
SELECT PROD_CD
      , ORDER_DATE
      , ORDER_TYPE
FROM   ORDER
WHERE  PROD_CD    = :PROD_CD
  AND  ORDER_DATE LIKE :ORDER_DATE || '%'
  AND  ORDER_TYPE = :ORDER_TYPE;
-- ํŠœ๋‹
SELECT PROD_CD
      , ORDER_DATE
      , ORDER_TYPE
FROM ORDER
WHERE ORDER_DATE IS NOT NULL
  AND PROD_CD    = :PROD_CD
  AND ORDER_DT   = :ORDER_DATE
  AND ORDER_TYPE = :ORDER_TYPE
UNION ALL
SELECT PROD_CD
      , ORDER_DATE
      , ORDER_TYPE
FROM ORDER
WHERE ORDER_DATE IS NULL
  AND PROD_CD    = :PROD_CD
  AND ORDER_TYPE = :ORDER_TYPE;

-- ํŠœ๋‹: ์ฃผ๋ฌธ์ผ์ž ์ปฌ๋Ÿผ์ด NOT NULL ์ผ ๊ฒฝ์šฐ
SELECT PROD_CD
      , ORDER_DATE
      , ORDER_TYPE
FROM ORDER
WHERE PROD_CD    = :PROD_CD
  AND ORDER_DT   = NVL(:ORDER_DATE, ORDER_DATE)
  AND ORDER_TYPE = :ORDER_TYPE;

3.5 ๋™์ผ ์ปฌ๋Ÿผ์— ๋‘ ๊ฐœ์˜ ๋ฒ”์œ„ ์กฐ๊ฑด ์‚ฌ์šฉ ์‹œ ์œ ์˜์‚ฌํ•ญ

SELECT *
FROM ORDER
WHERE TRIM(ORDER_NO) <= 10000
  AND ORDER_NO       <= 10;   -- Driving ์กฐ๊ฑด

3.6 BETWEEN๊ณผ LIKE ๋น„๊ต

BETWEEN(โ€™202401โ€™ AND โ€˜202412โ€™)์€ ์ •ํ™•ํ•œ ์‹œ์ž‘๊ณผ ๋์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด LIKE(โ€™2024%โ€™ โ†’ โ€˜2024121โ€™)๋Š” ํ˜น์‹œ ๋ชจ๋ฅผ ๊ฐ’์„ ์œ„ํ•ด ์ถ”๊ฐ€์ ์œผ๋กœ ์Šค์บ”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Between๊ณผ Like ๋น„๊ต

3.7 ์„ ๋ถ„ ์ด๋ ฅ์˜ ์ธ๋ฑ์Šค ์Šค์บ” ํšจ์œจ

์ตœ๊ทผ ๋ฐ์ดํ„ฐ ์กฐํšŒ: ์ข…๋ฃŒ์ผ์ž + ์‹œ์ž‘์ผ์ž
๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ ์กฐํšŒ: ์‹œ์ž‘์ผ์ž + ์ข…๋ฃŒ์ผ์ž
์ธ๋ฑ์Šค ์ˆ˜์ • ๋ถˆ๊ฐ€: INDEX_DESC ํžŒํŠธ ์‚ฌ์šฉ
์ค‘๊ฐ„ ์ง€์ ์„ ์กฐํšŒ: ROWNUM <= 1 ์กฐ๊ฑด์„ ํ™œ์šฉ

์„ ๋ถ„ ์ด๋ ฅ ์กฐํšŒ

์„ ๋ถ„ ์ด๋ ฅ ์กฐํšŒ

์„ ๋ถ„ ์ด๋ ฅ ์กฐํšŒ

4. ์ธ๋ฑ์Šค์˜ ์ข…๋ฅ˜

4.1 B*Tree ์ธ๋ฑ์Šค

BTree์˜ ๊ฐ ๋…ธ๋“œ๋Š” ์ •๋ ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฃŒ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š์œผ๋ฉฐ, Leaf Node๋Š” ๋™์ผ ๋ ˆ๋ฒจ์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. BTree์˜ B๋Š” Balanced๋กœ ์ ๋ฆผ ํ˜„์ƒ์„ ์ œ๊ฑฐํ•˜์—ฌ ๊ท ํ˜•์ด ์œ ์ง€๋˜๋Š” โ€˜๊ท ํ˜•์ด์ง„ํŠธ๋ฆฌโ€™๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

Index Skew: ์‹œ๊ณ„์—ด์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ธ๋ฑ์Šค์—์„œ ๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋Œ€๋Ÿ‰์œผ๋กœ ์‚ญ์ œํ•˜๋ฉด ์™ผ์ชฝ Leaf ๋ธ”๋ก๋“ค์€ ํ…… ๋น„์–ด๋ฒ„๋ฆฌ๋Š” ๋ฐ˜๋ฉด, ์˜ค๋ฅธ์ชฝ ๋ธ”๋ก๋“ค์€ ๊ฝ‰ ์ฐฌ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ํ…… ๋นˆ ๋ธ”๋ก๋“ค์€ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋‹ค์‹œ ์ฑ„์›Œ์งˆ ๋•Œ๊นŒ์ง€ ์ธ๋ฑ์Šค ์Šค์บ” ํšจ์œจ์ด ์ €ํ•˜๋ฉ๋‹ˆ๋‹ค.

Index Sparse: ๋Œ€๋Ÿ‰์˜ ์‚ญ์ œ ์ž‘์—…์œผ๋กœ ์ธ๋ฑ์Šค ๋ฐ€๋„๊ฐ€ ๋‚ฎ์€ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. Index Skew์ฒ˜๋Ÿผ ๋ธ”๋ก์ด ํ…… ๋น„๋ฉด ๊ณง๋ฐ”๋กœ ๋ฐ˜ํ™˜๋˜์–ด ์žฌ์‚ฌ์šฉ๋˜์ง€๋งŒ, Sparse ํ˜„์ƒ์€ ์ง€์›Œ์ง„ ์ž๋ฆฌ์— ์ธ๋ฑ์Šค ์ •๋ ฌ ์ˆœ์„œ์— ๋”ฐ๋ผ ์ƒˆ๋กœ์šด ๊ฐ’์ด ์ž…๋ ฅ๋˜์ง€ ์•Š์œผ๋ฉด ์˜์˜ ์žฌ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ธ๋ฑ์Šค ์žฌ์ƒ์„ฑ ์š”๊ฑด

  • ์ธ๋ฑ์Šค ๋ถ„ํ• ์— ์˜ํ•œ ๊ฒฝํ•ฉ ์ฆ๊ฐ€
  • ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ์ธ๋ฑ์Šค ์Šค์บ” ํšจ์œจ ๊ฐœ์„  (ํŠนํžˆ NL Join์—์„œ ๋ฐ˜๋ณต ์—‘์„ธ์Šค๋˜๋Š” ์ธ๋ฑ์Šค์˜ ๋†’์ด ์ฆ๊ฐ€)
  • ๋Œ€๋Ÿ‰์˜ delete ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•œ ์ดํ›„ ๋‹ค์‹œ ๋ ˆ์ฝ”๋“œ๊ฐ€ ์ž…๋ ฅ๋˜๊ธฐ๊นŒ์ง€ ์˜ค๋žœ ๊ธฐ๊ฐ„์ด ์†Œ์š”๋  ๋•Œ
  • ์ด ๋ ˆ์ฝ”๋“œ ์ˆ˜๋Š” ์ผ์ •ํ•œ๋ฐ๋„ ์ธ๋ฑ์Šค๊ฐ€ ๊ณ„์† ์ปค์งˆ ๋•Œ

4.2 ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค

Distinct ๋‚ฎ๊ณ  ์ธ๋ฑ์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ํ•„์š”ํ•œ ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ”์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋‹ค์–‘ํ•œ ๋ถ„์„๊ด€์ ์„ ๊ฐ€์ง„ ํŒฉํŠธ์„ฑ ํ…Œ์ด๋ธ”์— ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์‹œ ์—ฌ๋Ÿฌ ๋น„ํŠธ๋งต ์ธ๋ฑ์Šค๋ฅผ ๋™์‹œ์— ํ™œ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ •ํ˜•ํ™”๋˜์ง€ ์•Š์€ ์ž„์˜ ์งˆ์˜(ad-hoc query) ํ™˜๊ฒฝ(DW)์— ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

4.3 ํ•จ์ˆ˜๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค

CREATE INDEX IX_EMP_01 ON ORDER(UPPER(ename));

๋ฐ์ดํ„ฐ ์ž…๋ ฅ, ์ˆ˜์ • ์‹œ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋ฏ€๋กœ ๋‹ค์†Œ ๋ถ€ํ•˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ๋œ ํ•จ์ˆ˜๊ฐ€ User-Defined ํ•จ์ˆ˜์ผ ๊ฒฝ์šฐ ๋ถ€ํ•˜๊ฐ€ ๊ทน์‹ฌํ•˜๋ฏ€๋กœ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

4.4 ๋ฆฌ๋ฒ„์Šค ์ธ๋ฑ์Šค

์ผ๋ จ๋ฒˆํ˜ธ, ์ฃผ๋ฌธ์ผ์‹œ ๊ฐ™์€ ์ปฌ๋Ÿผ์— ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ์ž…๋ ฅ๋˜๋Š” ๊ฐ’์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋ฉฐ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ๋ฆฌํ”„ ๋ธ”๋ก์—๋งŒ ๋ฐ์ดํ„ฐ๊ฐ€ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ํ˜„์ƒ์„ Right Growing์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ ๋ฆฌ๋ฒ„์Šค ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฆฌํ”„ ๋ธ”๋ก ์ „์ฒด์— ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ž…๋ ฅ๋œ ๊ฐ’์ด ๊บผ๊พธ๋กœ ๋ณ€ํ™˜๋˜์–ด ์žˆ์–ด Equal(=) ๊ฒ€์ƒ‰๋งŒ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

4.2 ์ธ๋ฑ์Šค ์„ค๊ณ„

๊ฒฐํ•ฉ ์ธ๋ฑ์Šค ๊ตฌ์„ฑ์„ ์œ„ํ•œ ๊ณต์‹

  • ์กฐ๊ฑด์ ˆ์— ํ•ญ์ƒ ์‚ฌ์šฉ๋˜๋Š”๊ฐ€?
  • Equal(=) ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š”๊ฐ€?
  • ์นด๋””๋„๋ฆฌํ‹ฐ๊ฐ€ ์ข‹์€๊ฐ€?
  • Sort Operation ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•œ๊ฐ€?

์ถ”๊ฐ€์ ์ธ ๊ณ ๋ ค ์‚ฌํ•ญ

  • ์ฟผ๋ฆฌ ์ˆ˜ํ–‰ ๋นˆ๋„
  • ์—…๋ฌด์ƒ ์ค‘์š”๋„
  • ํด๋Ÿฌ์Šคํ„ฐ๋ง ํŒฉํ„ฐ
  • ๋ฐ์ดํ„ฐ๋Ÿ‰
  • DML ๋ถ€ํ•˜
  • ์ €์žฅ ๊ณต๊ฐ„
  • ์ธ๋ฑ์Šค ๊ด€๋ฆฌ ๋น„์šฉ