0
考慮以下幾點:指標的where子句和連接子句
- 表1用下列:A,B,米
- 表2用下列:A,B,X,Y
這是我的查詢:
select t2.a, t2.b, t1.m
from table2 t2
join table1 t1 on t1.a = t2.a
and t2.b = t2.b
where t2.x = 'some value'
and t2.y = 'some other value'
我必須優化此查詢。
我有以下非羣集索引:
- 對錶1的索引,其列a和b對錶2的
- 索引,其列於表2一 和b
- 指數,用柱x和y
我會受益於table2上的另一個索引,它將涵蓋此查詢中使用的所有列:a,b,x和y?
我認爲,你可以考慮到包括在'table1'索引中的列'M'(作爲包含列) – Lamak
@拉馬克,是的,我明白了。我的實際查詢比簡單的例子更復雜。我對錶2中的指數更感興趣。這兩個「現有」指數是否足夠,還是應該創建一個全部4列的額外指標? –
當提出查詢計劃時,優化器將只爲每個表使用一個索引。你想確保這個索引是有用的。這可能取決於哪個表將被掃描,哪些將被索引鍵入,這可以取決於每個表的大小。您可能需要四處遊覽並查看正在使用哪個索引。如果不需要其他列(因此數據頁不需要解除引用),可以將索引添加到索引中,這有助於使其成爲「覆蓋查詢」,對IO有幫助。 –