一句話解釋“外連接消除”

外連接消除就是將一個 outer join 轉換成 inner join。

例如下面的查詢適合做外連接消除:

select * from a left join b on a.pk = b.pk where b.col = 3;

它可以被等價地改寫成:

select * from a inner join b on a.pk = b.pk where b.col = 3;

爲什麼呢?因爲這個查詢的結果中不可能出現 b 爲 NULL 的行,假設有這樣的行,它也一定會被 where b.col = 3 過濾掉。這使得使用 outer join 和使用 inner join 的效果等價。

“外連接消除” 最終目的是給優化器帶來更多的靈活性,inner join 可以選擇的優化路徑比 outer join 多得多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章