情況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 tablehash 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. 先將需LoopInternal Table 排序。

 

修改後程式範例:       

 

 

 

情況6:

Loop at 包含 where 條件  

 

修改前程式範例:

 

 

建議方式:

 應用 Parallel Cursor 

  PS. 先將需LoopInternal Table 排序。

 

修改後程式範例:

 

以上,分享完畢,若有錯誤,歡迎大家指教告知,謝謝

 

文章標籤
全站熱搜
創作者介紹
創作者 呂小巴<Tiffany> 的頭像
呂小巴<Tiffany>

*~跟著粉妮一起冒險旅行去~*

呂小巴<Tiffany> 發表在 痞客邦 留言(1) 人氣(9,656)