DATABASE/SQL

[ Oracle SQL ] 인덱슀(INDEX)

haeun ν•˜μ€ 2022. 5. 11. 17:53
728x90

πŸ“— 인덱슀(INDEX)

 

βœ” ν…Œμ΄λΈ”μ— λŒ€ν•œ λ™μž‘μ˜ 속도λ₯Ό λ†’μ—¬μ£ΌλŠ” μžλ£Œ ꡬ쑰

βœ” μΈλ±μŠ€λŠ” μ›ν•˜λŠ” μ •λ³΄μ˜ μœ„μΉ˜λ₯Ό λΉ λ₯΄κ³ , μ •ν™•ν•˜κ³ , μ§€λŠ₯적으둜 μ•Œμ•„λ‚Ό 수 μžˆλŠ” 방법 μ œκ³΅ν•œλ‹€.

βœ” μΈλ±μŠ€λŠ” ν…Œμ΄λΈ” λ‚΄μ˜ 1개의 컬럼, ν˜Ήμ€ μ—¬λŸ¬ 개의 μ»¬λŸΌμ„ μ΄μš©ν•˜μ—¬ 생성될 수 μžˆλ‹€.

βœ” ν…Œμ΄λΈ”μ˜ μ»¬λŸΌμ— λŒ€ν•œ μ œμ•½ 쑰건을 μ„€μ •ν•  λ•Œ 고유 μ œμ•½ 쑰건인 PRIMARY KEYλ‚˜ UNIQUE둜 μ„€μ •ν•˜λ©΄ Oracle은 μžλ™μœΌλ‘œ 이 μ»¬λŸΌμ— λŒ€ν•΄ Unique indexλ₯Ό μ„€μ •ν•œλ‹€.

βœ… Unique index : 데이터 값이 쀑볡됨이 없이 μœ μΌν•œ 값을 κ°€μ§€λŠ” μ»¬λŸΌμ— 인덱슀λ₯Ό μ„€μ •ν–ˆμ„ λ•Œ, 고유 μΈλ±μŠ€λŠ” μ€‘λ³΅λœ ν•­λͺ©μ΄ λ“±λ‘λ˜λŠ” 것을 κΈˆμ§€ν•˜κΈ° λ•Œλ¬Έμ— 인덱슀의 λŒ€μƒμΈ ν…Œμ΄λΈ”μ—μ„œ κ³ μœ μ„±μ΄ 보μž₯λœλ‹€.

 



πŸ“Œ 인덱슀 λ§Œλ“€κΈ°

 

βœ… μžλ™ : ν…Œμ΄λΈ” μ •μ˜μ— PRIMARY KEY λ˜λŠ” UNIQUE μ œμ•½ 쑰건을 μ •μ˜ν•˜λ©΄ 고유 μΈλ±μŠ€κ°€ μžλ™μœΌλ‘œ μƒμ„±λœλ‹€.

βœ… μˆ˜λ™ : μ‚¬μš©μžκ°€ 열에 κ³ μœ ν•˜μ§€ μ•Šμ€ 인덱슀λ₯Ό μƒμ„±ν•˜μ—¬ 행에 λŒ€ν•œ μ•‘μ„ΈμŠ€ μ‹œκ°„μ„ 쀄일 수 μžˆλ‹€.

 
CREATE INDEX index_name
ON table_name (column_name[,column_name]...);

 


 

βœ… μœ μΌν•œ 값을 κ°€μ§€λŠ” μ»¬λŸΌμ— 인덱슀 μ„€μ • : UNIQUE INDEX

//μœ μΌν•œ 값을 κ°€μ§€λŠ” μ»¬λŸΌμ— 인덱슀 μ„€μ • : UNIQUE INDEX
CREATE UNIQUE INDEX dname_idx
ON dept (dname);
 

 

βœ… μœ μΌν•œ 값을 κ°€μ§€μ§€ μ•ŠλŠ” μ»¬λŸΌμ— 인덱슀 μ„€μ • : NON UNIQUE INDEX

//μœ μΌν•œ 값을 κ°€μ§€μ§€ μ•ŠλŠ” μ»¬λŸΌμ— 인덱슀 μ„€μ • : NON UNIQUE INDEX
//emp ν…Œμ΄λΈ”μ˜ ename열에 λŒ€ν•œ 질의 μ•‘μ„ΈμŠ€ 속도 ν–₯상

create index emp_ename_idx
on emp(ename);
----------------------------
CREATE INDEX deptno_idx
ON emp (deptno);

 

 
인덱슀 생성이 ν•„μš”ν•œ 경우 인덱슀λ₯Ό μƒμ„±ν•˜μ§€ μ•Šμ•„μ•Ό ν•  경우
열에 κ΄‘λ²”μœ„ν•œ 값이 ν¬ν•¨λœ 경우 ν…Œμ΄λΈ”μ΄ μž‘μ€ 경우
열에 널 값이 많이 ν¬ν•¨λœ 경우 열이 질의의 쑰건으둜 자주 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 경우
WHERE 절 λ˜λŠ” 쑰인 μ‘°κ±΄μ—μ„œ
ν•˜λ‚˜ μ΄μƒμ˜ 열이 ν•¨κ»˜ 자주 μ‚¬μš©λ˜λŠ” 경우
μΈλ±μŠ€ν™”λœ 열이 ν‘œν˜„μ‹μ˜ μΌλΆ€λ‘œ μ°Έμ‘°λ˜λŠ” 경우
큰 ν…Œμ΄λΈ”μ—μ„œ λŒ€λΆ€λΆ„μ˜ μ§ˆμ˜μ— μ˜ν•΄
κ²€μƒ‰λ˜λŠ” 행이 2%~4% 미만인 경우
λŒ€λΆ€λΆ„μ˜ μ§ˆμ˜κ°€ ν…Œμ΄λΈ”μ— μžˆλŠ” ν–‰μ˜ 2%~4% 이상을 검색할 경우
  ν…Œμ΄λΈ”μ΄ 자주 κ°±μ‹ λ˜λŠ” 경우

 


πŸ“Œ ν•¨μˆ˜ 기반 인덱슀

 

βœ… ν•¨μˆ˜ 기반 μΈλ±μŠ€λŠ” ν‘œν˜„μ‹μ„ 기반으둜 ν•˜λŠ” 인덱슀

βœ… 인덱슀 ν‘œν˜„μ‹μ€ ν…Œμ΄λΈ” μ—΄, μƒμˆ˜, SQL ν•¨μˆ˜ 및 μ‚¬μš©μžκ°€ μ •μ˜ν•œ ν•¨μˆ˜λ‘œλΆ€ν„° μƒμ„±λœλ‹€. 

 

 

 

 

 

728x90
λ°˜μ‘ν˜•