select - Where 子句的字段顺序

标签 select abap database-performance

我发现,该字段顺序会影响 Select 性能。例如,我想从 View 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

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

如何解释这个问题?

最佳答案

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

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

关于select - Where 子句的字段顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16185986/

相关文章:

MySQL:如果存在则获取 ID,否则插入并返回 ID

jQuery 将 MultiSelect 值移动到另一个 MultiSelect

abap - 报告每个用户和每个日期的 tcodes 使用情况

database - 在 SQLite 中读取固定宽度的列是否更快?

java - jstatd,找不到命令 CentOS 7

javascript - 单击时选择元素立即关闭

custom-controls - 输入字段有自定义控件吗?

db2 - 为什么 `FOR ALL ENTRIES` 会降低 DB6 上 CDS View 的性能?

php - 随着我们的生产数据库的增长,如何测试查询是否花费了更长的时间?

mysql - 选择mysql中每个ID的第二行