λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ§‘‍πŸ’Ό SAP/ABAP

[SAP ABAP] %_HINTS ORACLE λž€?

by Jay Din 2023. 12. 13.
728x90
λ°˜μ‘ν˜•

%_HINTS ORACLE λž€?

` %_HINTS ORACLE `λŠ” Oracle λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λŠ” 쿼리에 λŒ€ν•œ 힌트λ₯Ό μ„€μ •ν•˜λŠ” κΈ°λŠ₯μž…λ‹ˆλ‹€.

 

νžŒνŠΈλŠ” 쿼리 μ˜΅ν‹°λ§ˆμ΄μ €μ—κ²Œ μ–΄λ–€ μ‹€ν–‰ κ³„νšμ„ μ‚¬μš©ν•΄μ•Όν•˜λŠ”μ§€ μ•Œλ €μ€ŒμœΌλ‘œμ¨ μ„±λŠ₯을 μ΅œμ ν™”ν•˜λŠ”λ° 도움이 λ©λ‹ˆλ‹€.

특히 λŒ€λŸ‰μ˜ 데이터λ₯Ό λ‹€λ£¨λŠ” κ²½μš°λ‚˜ λ³΅μž‘ν•œ 쿼리의 κ²½μš°μ— μœ μš©ν•©λ‹ˆλ‹€.

 

 ` %_HINTS ` λž€?

μ—¬κΈ°μ—μ„œ ` %_HINTS ` λž€ ABAPμ—μ„œ νŠΉμ • λ°μ΄ν„°λ² μ΄μŠ€μ— 힌트λ₯Ό μ§€μ •ν•˜λŠ”λ° μ‚¬μš©λ˜λŠ” νŠΉμˆ˜ν•œ κ΅¬λ¬Έμž…λ‹ˆλ‹€.

` ORACLE `은 Oracle λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λŒ€μƒμœΌλ‘œ ν•˜λŠ” 힌트λ₯Ό μ§€μ •ν•œλ‹€λŠ” 것을 λœ»ν•©λ‹ˆλ‹€.

 

힌트λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ μ‹€ν–‰ κ³„νšμ„ μ‹œλ„ν•˜κ±°λ‚˜ 쿼리 μ˜΅ν‹°λ§ˆμ΄μ €κ°€ μ‚¬μš©ν•΄μ•Ό ν•  인덱슀λ₯Ό κ°•μ œλ‘œ μ§€μ •ν•˜λŠ” λ“±μ˜ μž‘μ—…μ„ μˆ˜ν–‰ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μ΄λŠ” μ„±λŠ₯ νŠœλ‹μ΄λ‚˜ νŠΉμ • 쿼리의 μ‹€ν–‰ κ³„νšμ„ μ‘°μ ˆν•  λ•Œ μœ μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

%_HINTS ORACLE μ‚¬μš©μ˜ˆμ œ

이 힌트λ₯Ό μ‚¬μš©ν•˜μ—¬ Oracle λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ νŠΉμ • 쿼리의 μ‹€ν–‰ κ³„νšμ„ κ°•μ œλ‘œ μ‘°μ ˆν•  수 μžˆμŠ΅λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, νŠΉμ • 인덱슀λ₯Ό μ‚¬μš©ν•˜λ„λ‘ μ§€μ‹œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

μ•„λž˜λŠ” `SCARR` ν…Œμ΄λΈ”μ—μ„œ `CARRID`κ°€ 'LH'인 항곡사 정보λ₯Ό κ°€μ Έμ˜€λŠ” ABAP ν”„λ‘œκ·Έλž¨μ˜ μ˜ˆμ œμž…λ‹ˆλ‹€.

REPORT ZHINTS_ORACLE_EXAMPLE.

DATA lt_scarr TYPE TABLE OF scarr.
DATA lv_carrid TYPE scarr-carrid VALUE 'LH'.

SELECT *
  FROM scarr
  INTO TABLE lt_scarr
  WHERE carrid = lv_carrid
  AND %_HINTS ORACLE 'INDEX("SCARR" "CARRID_INDEX")'.

 

μœ„μ˜ ABAP μ½”λ“œμ—μ„œ `%_HINTS ORACLE` λ‹€μŒμ— μ˜€λŠ” νžŒνŠΈλŠ” Oracle μ˜΅ν‹°λ§ˆμ΄μ €μ—κ²Œ 'SCARR' ν…Œμ΄λΈ”μ—μ„œ 'CARRID_INDEX' λΌλŠ” 인덱슀λ₯Ό μ‚¬μš©ν•˜λ„λ‘ κ°•μ œν•©λ‹ˆλ‹€.

μ΄λŠ” λ°μ΄ν„°λ² μ΄μŠ€ 엔진이 ν•΄λ‹Ή 인덱슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 쿼리λ₯Ό μ΅œμ ν™”ν•˜λ„λ‘ μœ λ„ν•©λ‹ˆλ‹€.

 

힌트λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” νŠΉμ • μƒν™©μ—μ„œ μ˜΅ν‹°λ§ˆμ΄μ €κ°€ 졜적의 μ‹€ν–‰ κ³„νšμ„ μ„ νƒν•˜μ§€ λͺ»ν•  수 있기 λ•Œλ¬Έμž…λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 힌트λ₯Ό μ‚¬μš©ν•  λ•Œ μ£Όμ˜κ°€ ν•„μš”ν•˜λ©°, μ‹€ν–‰ κ³„νšμ΄ ν™˜κ²½μ— 따라 변경될 수 있기 λ•Œλ¬Έμ— μ„Έμ‹¬ν•œ ν…ŒμŠ€νŠΈμ™€ λͺ¨λ‹ˆν„°λ§μ΄ ν•„μš”ν•©λ‹ˆλ‹€.

λ˜ν•œ, 힌트λ₯Ό λ‚¨μš©ν•˜λ©΄ 였히렀 μ„±λŠ₯ μ €ν•˜λ₯Ό μΌμœΌν‚¬ 수 μžˆμœΌλ―€λ‘œ μ‹ μ€‘ν•˜κ²Œ μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

 

728x90
λ°˜μ‘ν˜•