Select Where子句的字段顺序
我发现,字段顺序会影响Select性能。例如,我想通过Select Where子句的字段顺序,select,abap,database-performance,Select,Abap,Database Performance,我发现,字段顺序会影响Select性能。例如,我想通过TPLNR(500)、DATBI(1)和EQTYP(1)从视图V_EUQI中提取数据,句子如下: 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 如何解释这个问题?几乎可以肯定这与索引有关。从
TPLNR
(500)、DATBI
(1)和EQTYP
(1)从视图V_EUQI
中提取数据,句子如下:
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跟踪来确认这一点,并确认使用了哪些索引。您是否完全确定范围表的内容完全相同?您能否提供两种变体的SQL跟踪(ST05)分析结果的屏幕截图?