【实用】ABAP“FOR ALL ENTRIES”的Hints 优化

ABAP“FOR ALL ENTRIES”的Hints 优化

 

通常默认情况下“FOR ALL ENTRIES IN”语句会将内表每5个数据生成一个新的Where语句来执行。

可通过事务代码“RZ11”查询参数名称“rsdb/max_blocking_factor”,如下图所示。

 

比如下面的代码(仅供测试):

REPORT ZTEST.
DATA : BEGIN OF LT_KNA1 OCCURS 0,
         KUNNR TYPE KNA1-KUNNR,
       END OF LT_KNA1.
DATA : LT_KNB1 LIKE TABLE OF KNB1 WITH HEADER LINE.
START-OF-SELECTION.
  SELECT * FROM KNA1
    INTO CORRESPONDING FIELDS OF TABLE LT_KNA1.
  IF LT_KNA1[] IS NOT INITIAL.
    SELECT * FROM KNB1
      INTO TABLE LT_KNB1
      FOR ALL ENTRIES IN LT_KNA1
      WHERE KUNNR = LT_KNA1-KUNNR.
  ENDIF.
  WRITE : 'Finish!'.

我们用事务代码“ST05”跟踪执行后可以发现,默认确实是读取内表中的五条数据。

 

为了减少与数据库的交互,缩减Select语句的次数,我们可以在Select语句的最后加上了这样一句话,每次读取的数据就会发生变化。

%_HINTS ORACLE '&max_blocking_factor 20& &max_in_blocking_factor 20&'

(这里注意若是HANA数据库,需要换成%_HINTS HDB)

 

但是,rsdb/max_blocking_factor 设置的过大可能会使 SQL 超长,造成程序 DUMP,所以设置需谨慎。

 

【扩展学习】

  • rsdb/MB_CUR_MAX
  • rsdb/_create_single_client_cond
  • rsdb/cua/buffersize
  • rsdb/cua/max_objects
  • rsdb/cua/mutex_n
  • rsdb/db2jcl_library
  • rsdb/dbhost
  • rsdb/dbid
  • rsdb/esm/buffersize_kb
  • rsdb/esm/large_object_size
  • rsdb/esm/max_objects
  • rsdb/esm/mutex_n
  • rsdb/fda_level
  • rsdb/fda_shm_seg_size
  • rsdb/icli_library
  • rsdb/max_blocking_factor
  • rsdb/max_in_blocking_factor
  • rsdb/max_union_blocking_factor
  • rsdb/min_blocking_factor
  • rsdb/min_in_blocking_factor
  • rsdb/min_union_blocking_factor
  • rsdb/ntab/entrycount
  • rsdb/ntab/ftabsize
  • rsdb/ntab/irbdsize
  • rsdb/ntab/sntabsize
  • rsdb/obj/buffersize
  • rsdb/obj/large_object_size
  • rsdb/obj/max_objects
  • rsdb/obj/mutex_n
  • rsdb/oracle_host_standby
  • rsdb/oracle_sid_standby
  • rsdb/otr/buffersize_kb
  • rsdb/otr/max_objects
  • rsdb/otr/mutex_n
  • rsdb/prefer_fix_blocking
  • rsdb/prefer_in_itab_opt
  • rsdb/prefer_join
  • rsdb/prefer_join_with_fda
  • rsdb/prefer_union_all
  • rsdb/rclu/opt_level
  • rsdb/rda
  • rsdb/reco_add_error_codes
  • rsdb/reco_ping_cmd
  • rsdb/reco_sleep_time
  • rsdb/reco_sosw_for_db
  • rsdb/reco_sync_all_server
  • rsdb/reco_tcp_service
  • rsdb/reco_trials
  • rsdb/rep/fast_touch
  • rsdb/ssfs_connect
  • rsdb/staton
  • rsdb/stattime
  • rsdb/supports_fda_prot
  • rsdb/tbi_buffer_area_MB
  • rsdb/tbi_dir_entries
  • rsdb/trace_modules
  • rsdb/vmcj/codepage_compatibility

 

猜你喜欢

转载自blog.csdn.net/zhongguomao/article/details/108759495
ALL
今日推荐