2013-04-24 65 views
4

我發現,該字段順序會影響Select性能。例如,我想通過TPLNR(500)從圖V_EUQI提取數據,DATBI(1)和EQTYP(1),句子: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 2013-04-24 08:54:36

回答

2

這幾乎肯定與索引有關。從透明表讀取時,爲了獲得最佳性能,WHERE子句中的字段順序應該匹配索引的順序或表中字段從左到右的順序(以利用從以下內容創建的任何隱式索引主鍵)。索引不能爲視圖定義,但是任何爲基礎表定義的索引肯定會被使用。

您應該能夠使用SQL跟蹤確認這一點並確認使用了哪些索引。