Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Select Where子句的字段顺序_Select_Abap_Database Performance - Fatal编程技术网

Select Where子句的字段顺序

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 如何解释这个问题?几乎可以肯定这与索引有关。从

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


如何解释这个问题?

几乎可以肯定这与索引有关。从透明表读取时,为了获得最佳性能,
WHERE
子句中字段的顺序应与索引的顺序或表中字段的从左到右顺序相匹配(以利用从主键创建的任何隐式索引)。不能为视图定义索引,但一定会使用为基础表定义的任何索引


您应该能够使用SQL跟踪来确认这一点,并确认使用了哪些索引。

您是否完全确定范围表的内容完全相同?您能否提供两种变体的SQL跟踪(ST05)分析结果的屏幕截图?