FOR ALL ENTRIES IN内表排序、排重对性能的影响
生活随笔
收集整理的這篇文章主要介紹了
FOR ALL ENTRIES IN内表排序、排重对性能的影响
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
大家都知道for all entries in 關聯內表時,要先判斷內表不為空 否則會掃描全表,非常消耗服務器內存資源,那么內表關鍵字段的排序和排重對查詢效率有沒有影響呢?下面看一個例子
程序代碼:
DATA: it_mara TYPE STANDARD TABLE OF mara,
wa_mara TYPE mara,
it_makt TYPE STANDARD TABLE OF makt,
wa_makt TYPE makt,
it_temp_mara TYPE STANDARD TABLE OF mara,
wa_temp_mara TYPE mara.
* Get all the records from MARA
SELECT *
UP TO 100 ROWS
FROM mara
INTO TABLE it_temp_mara.
IF sy-subrc = 0.
??IF NOT it_temp_mara[] IS INITIAL.
* 具有重復數據的內表
? ? DO 1000 TIMES.
? ?? ?APPEND LINES OF it_temp_mara TO it_mara.
? ? ENDDO.
? ? IF NOT it_mara[] IS INITIAL.
* Select MAKT
? ?? ?WRITE:/'內表中數據未經排序排重'.
? ?? ?PERFORM select_makt.
* 排過序的內表
? ?? ?WRITE:/'內表中數據已排序未排重'.
? ?? ?SORT it_mara BY matnr.
? ?? ?PERFORM select_makt.
* 刪除了重復數據的內表
? ?? ?WRITE:/'內表中數據已排序并排重'.
? ?? ?DELETE ADJACENT DUPLICATES FROM it_mara COMPARING matnr.
? ?? ?PERFORM select_makt.
? ? ENDIF.
??ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form select_makt
*&---------------------------------------------------------------------*
* Select data friom MAKT
*----------------------------------------------------------------------*
FORM select_makt .
??DATA: t1 TYPE i,
??t2 TYPE i,
??tmin TYPE i.
??REFRESH it_makt[].
??GET RUN TIME FIELD t1.
??SELECT *
??FROM makt
??INTO TABLE it_makt
??FOR ALL ENTRIES IN it_mara
??WHERE matnr = it_mara-matnr.
??GET RUN TIME FIELD t2.
??tmin = t2 - t1.
??tmin = tmin .
??WRITE:/ ' Time(ms) = ', tmin.
ENDFORM.? ?? ?? ?? ?? ?? ???"select_makt
程序代碼:
復制代碼
由上邊的執行時間分析,可以得出以下結論:
內表排序和排重都能提高[FOR ALL ENTRIES]查詢的效率
1、使用FOR ALL ENTRIES IN時內表中不要有重復的數據
2、對內表進行排序
特別注意第二點,容易被忽略
注意:這里的時間給錯了,是us,不是ms毫秒
總結
以上是生活随笔為你收集整理的FOR ALL ENTRIES IN内表排序、排重对性能的影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】ABAP的坑4
- 下一篇: 【转】根据起止日期+时间取数