开发基础 报表教程 数据字典 对话编程 表单打印 增强出口 SAP接口 S/4 HANA
实战案例 实战笔记 资料下载 CRM
问答互助 会员分享 俱乐部 广告区
论坛指南、建议和投诉
Twilight发表于 2016-12-16 13:51ZXCWQE 最后回复于 2020-10-10 10:39 [复制链接] 6306 2
使用道具 举报
Twilight
管理员
发表回复 回帖后跳转到最后一页
除了在应用层批次拆分内表外(ABAP内表数据分批次处理程序的代码模板),还可以使用HINT语句来控制。
性能调优项目中常见下面这种sql:
这是针对ORACLE数据库的取数性能调优,其中prefer_i开头的这些参数,是可以通过配置参数文件可以调整的。
RZ1--转到--参数文件值--服务器的-->双击服务器名称
1、rsdb/prefer_join
使用连接(JOIN)的方式实现FOR ALL ENTRIES,0禁用 1启用
2、rsdb/prefer_union_all
= 0 时,条件之间用OR连接
= 1时,条件之间用UNION ALL连接
case 1:
ST05跟踪结果:
3、rsdb/prefer_in_itab_opt
该参数被设置为1,如果where条件中仅有一个字段被内表限制,则将内表的字段放到IN条件中
SQL IN条件比OR效率高,启用该参数可以提高效率
Case 2:启用prefer_in_itab_opt
ST05跟踪结果:
Case 3:禁用prefer_in_itab_opt
ST05跟踪结果:
4、rsdb/max_blocking_factor
该参数设定每个SQL Statement处理的内表条件的个数。
如果内表数据为50条,rsdb/max_blocking_factor = 5,则实际生成10条SQL Statement,每个SQL Statement包含5组条件
Case 4:
ST05跟踪结果:
5、rsdb/max_in_blocking_factor
同rsdb/max_blocking_factor类似,该参数针对rsdb/prefer_in_itab_opt,即WHERE 条件为IN的情况。
6、rsdb/min_blocking_factor
rsdb/prefer_fix_blocking = 1 时,该参数生效。
7、rsdb/min_in_blocking_factor
同rsdb/min_blocking_factor类似,该参数针对rsdb/prefer_in_itab_opt,即WHERE 条件为IN的情况。
8、rsdb/prefer_fix_blocking
该参数配合rsdb/min_blocking_factor使用,内表中数据的条数不能被 rsdb/max_blocking_factor 整除时,剩余数据是否均匀的生成SQL Statment由该参数控制,假设内表数据为20条,rsdb/max_blocking_factor=11,rsdb/min_blocking_factor=5 ,当rsdb/prefer_fix_blocking = 0 ,会生成两条SQL Statement,第一条条件为10个,第二条为9个.当rsdb/prefer_fix_blocking = 1时,会生成3条SQL语句,第一条10个条件,第二条和第三条5个条件。
Oracle在解析SQL时可以使用替换变量,相同的SQL在执行时,不需要重新解析,可以提高性能,设置该参数可以保证SQL Statement相同。
9、Note
v rsdb/prefer_fix_blocking和rsdb/min_in_blocking_factor针对少量数据,合理设置可有效利用Oracle的替代变量,在使用HINT优化大量数据时指定这连个参数意义不大vrsdb/max_blocking_factor 设置的过大可能会使SQL超长,造成程序DUMP,故参数文件中应谨慎设置,在HINT中rsdb/max_blocking_factor可以设置的大些,但要注意需测试出合理的值,提高性能的同时避免程序DUMP,实际使用中 ECC 5 SQL Statement中最多包含320组条件,即使max_blocking_factor设置为1000,实际仍按320处理簇表无法利用max_blocking_factor参数提高性能,在ECC5测试,取BSEG每次仅处理一条数据。
SAP NOTE 48230
10、HINTS扩展
表示扫描整个表
表示扫描索引表