我发现,字段顺序影响Select性能。例如,我想从视图V_EUQI
中提取TPLNR
(500), DATBI
(1)和EQTYP
(1)的数据,句子:
SELECT ... FROM v_equi INTO itab
WHERE eqtyp IN rg_eqtyp
AND datbi IN rg_datbi
AND tplnr IN rg_tplnr
运行速度比相同的select快得多,但字段顺序为TPLNR
- EQTYP
- DATBI
。
如何解释这个问题?
这几乎肯定与索引有关。当从透明表中读取数据时,为了获得最佳性能,WHERE
子句中字段的顺序应该与索引的顺序匹配,或者与表中字段的从左到右顺序匹配(以利用从主键创建的任何隐式索引)。不能为视图定义索引,但是为底层表定义的索引肯定会被使用。
您应该能够使用SQL跟踪并确认使用了哪些索引来确认这一点。