天天看點

SQL ABAP ST05 hint

Q1. 客戶用了很多select , 但在後面的程式裡面隻用到了LT_ORDERADM_H 的部分fields, select 會影響性能麼?

SELECT * INTO CORRESPONDING FIELDS OF TABLE LT_ORDERADM_H FROM CRMD_ORDERADM_H AS A1

INNER JOIN CRM_JEST AS B1 ON B1~OBJNR = A1~GUID

WHERE A1~PROCESS_TYPE EQ 'ZQ32'

AND   B1~STAT IN ('E0002','E0004','E0006') .

Q2.上面這段,滿足crmd_orderadm_h~process_type = ZQ32的有6200條,滿足CRM_jest的有300多萬條。覺得可以用NLJOIN,可是翻譯出來是用了HSJOIN。想問下怎麼加hint可以強制到NLJOIN呢?我的格式怎麼加也加不對。。。無法在ST05裡面看到結果。。

SELECT *

FROM

"CRMD_ORDERADM_H" T_00 INNER JOIN "CRM_JEST" T_01 ON T_01."MANDT" = ? AND T

_01."OBJNR" = T_00."GUID"

WHERE

T_00."CLIENT" = ? AND T_00."PROCESS_TYPE" = ? AND T_01."STAT" IN ( ?, ?, ?

)  WITH UR

/* <OPTGUIDELINES>   ç=============我想加這個hint, 改到NLJOIN, 驅動表是crmd_orderadm_h,然後給CRM_JEST強制用index ~0,但是ST05失敗。。

<NLJOIN>

<IXSCAN TABLE='T_00' INDEX='"T_00~ARC"'/>

<IXSCAN TABLE='T_01' INDEX='"T_01~0"'/>

</NLJOIN>

</OPTGUIDELINES> */

隻有用到 /* */的時候變成了NLJOIN

解析如下,有warning.

SQL ABAP ST05 hint

不加hint時,解析如下,estimated costs還比加了hint少呢。。。是這麼看的麼?

SQL ABAP ST05 hint