假設我們有這樣的查詢:強制使用索引可以提高性能?
select a.col1, b.col2
from t1 a
inner join t2 b on a.col1 = b.col2
where a.col1 = 'abc'
兩個col1
和col2
沒有任何指標。
如果我添加其他限制在where子句中,一個是永遠正確的,但與索引中的列:
select a.col1, b.col2
from t1 a
inner join t2 b on a.col1 = b.col2
where a.col1 = 'abc'
and a.id >= 0 -- column always true and with index
可能的查詢執行得更快,因爲它可以使用指數id
專欄?
除非'和a.id> = 0'減少行的數量,可能不是 – dfb
這有可能是存在被在優化器不會選擇用於第一第二種情況下使用的索引。例如,對於表't1'列上的複合索引'id'和'col1'可能不會出現在幫助第一查詢,但允許第二查詢,以減少I/O由於索引條目的(假設的)更大的密度每頁相比每頁錶行數。 – HABO
@HABO很好看,可能是這樣的! –