select – Where子句的字段顺序

我发现,该字段顺序会影响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

运行速度比同样的选择要快得多,但字段顺序为TPLNR-EQTYP-DATBI.

怎么解释这个问题?

最佳答案 它几乎肯定与索引相关.从透明表中读取时,为了获得最大性能,WHERE子句中字段的顺序应该与索引的字段顺序匹配,或者与表中字段的从左到右顺序匹配(以利用从中创建的任何隐式索引)主键(s)).无法为视图定义索引,但肯定会使用为基础表定义的任何索引.

您应该能够使用SQL跟踪确认并确认使用了哪些索引.

点赞