2013-04-24 1 views
4

Я обнаружил, что наложение поля влияет на производительность Select. Например, я хочу, чтобы извлечь данные из поля зрения V_EUQI по TPLNR (500), DATBI (1) и EQTYP (1), предложение:Порядок заказа для Where where

SELECT ... FROM v_equi INTO itab 
WHERE eqtyp IN rg_eqtyp 
    AND datbi IN rg_datbi 
    AND tplnr IN rg_tplnr 

работает гораздо быстрее, чем же выбрать, но порядок полей TPLNR - EQTYP - DATBI.

Как объяснить эту проблему?

+0

Вы полностью уверены, что содержание таблиц диапазонов абсолютно идентично? Не могли бы вы предоставить скриншоты результатов анализа из SQL-трассировки (ST05) для обоих вариантов? – vwegert

ответ

2

Это почти наверняка связано с индексацией. При чтении из прозрачной таблицы для максимальной производительности порядок полей в предложении WHERE должен соответствовать либо индексам, либо порядком слева и справа от полей в таблице (чтобы использовать любой неявный индекс, созданный из первичный ключ (ы)). Индексы не могут быть определены для представлений, но любые определенные для базовых таблиц, безусловно, будут использоваться.

Вы должны быть в состоянии подтвердить это с помощью трассировки SQL и подтвердить, какие индексы используются.