Performance
如何提高此選擇查詢的性能?
我有兩個表:TABLE1 和 TABLE2。
我正在執行這個
select
查詢來獲取數據。執行需要很長時間:SELECT TABLE1.* , TABLE2.COL1 , TABLE2.COL4 FROM TABLE1, TABLE2 WHERE TABLE1.COL1 IN ('1','TEXT','HO TED') AND TABLE1.COL2= 1800 AND TABLE2.COL1 = 10519198 AND TABLE1.COL3>= 100 AND TABLE1.COL4= TABLE2.COL2 AND TABLE2.COL3=('TEXT')
如何提高此選擇查詢的性能?太多
AND
會影響我的表現嗎?
根據您的評論,這裡可能是更快的版本:
SELECT TABLE1.* , TABLE2.COL1 , TABLE2.COL4 FROM TABLE1 INNER JOIN TABLE2 ON TABLE1.COL4 = TABLE2.COL2 WHERE TABLE1.COL1 IN ('1','TEXT','HO TED') AND TABLE1.COL2=1800 AND TABLE1.COL3>=100 AND TABLE2.COL1=10519198 AND TABLE2.COL3=('TEXT')
並且您需要在
TABLE1(COL2, COL1, COL3)
. 注意:基於雜湊的索引不行,因為您的條件TABLE1.COL3>=100
是間隔查詢,不可能被基於雜湊的索引固定!這也是原因,為什麼索引的最後一個元素必須是COL3TABLE1(COL2, COL1, COL3)
。另一個可以讓事情變得更好的索引是基於雜湊的索引
TABLE2(COL1,COL3)
。可能會有所幫助的進一步指數:
TABLE1(COL4)
和TABLE2(COL2)
(兩者)。沒有一個索引應該是唯一的。