情況1:
使用select * + INTO CORRESPONDING FIELDS OF TABLE
修改前程式範例:
建議方式:
避免使用 select * ,改為使用 select 所需欄位,加快select速度。
若欄位順序一致,應避免使用
INTO CORRESPONDING FIELDS OF TABLE 直接使用
INTO TABLE,減少資料讀取時間。
PS: 若為select single *,且目的為了確認是否有值,不見得改為此方式為最佳效果,故需測試後才能得知。
修改後程式範例:
情況2:
使用 Internal table
修改前程式範例:
建議方式:
在資料量大時,若Internal table有存在Key值,
改用hash table, hash table內資料為唯一值,在read table時能加快速度。
PS. 若 無key值則不適用。
修改後程式範例:
情況3:
Loop 內使用 select
修改前程式範例:
建議方式:
將select移至Loop外,改為internal table 或 hash table,在Loop內使用Read table方式,一次讀入。
修改後程式範例:
情況4:
使用Join ~ on ~
修改前程式範例:
建議方式:
改為使用 FOR ALL ENTRIES IN 。
注意事項:
1.檢查internal table是否為空值。
2 .internal table 必須排序。
3. Where條件值不宜重覆。
PS.若一定要使用join ~ on~,請針對table大小,由小join到大。
修改後程式範例:
情況5:
Loop at - 一般巢狀迴圈
修改前程式範例:
建議方式:
改為 Parallel Cursor
PS. 先將需Loop的Internal Table 排序。
修改後程式範例:
情況6:
Loop at 包含 where 條件
修改前程式範例:
建議方式:
應用 Parallel Cursor
PS. 先將需Loop的Internal Table 排序。
修改後程式範例:
以上,分享完畢,若有錯誤,歡迎大家指教告知,謝謝

謝謝您,獲益良多