今天無意間發現一句簡單Query的執行計畫有一個我沒見過的圖示
下圖是一個巢狀迴圈的運算子
而我今天看見一個巢狀迴圈的運算子,但上面多了一個叉叉,如下圖
產生這一個圖示的Query是很單純的兩張表Join,並Where一個ID如此而已。
整個Query的執行計畫如下圖。
該運算子的內容如下圖,其中紅色圈選處的警告說明顯示是 [ 無聯結述詞 ]
我測試一下發現這兩張表只要Join(Left Join也是)其執行計畫就會顯示叉叉
,可是其Query出來的資料又沒問題。此時我將狀況跟百敬老師說,本想問
一下有叉叉代表甚麼意思。
結果百敬老師還幫我爬文找資料(真的感謝老師Orz)。後來老師找到一篇文,
狀況跟我類似,連結如下
該文章作者也表示爬了很多文,大多建議的解法有重建索引或更新統計資料。
因此我姑且一試,將兩張資料表的Index給重新建立了。然後我們再執行
一次Query看看。
如下圖所示,該警告的叉叉消失了。
雖然不曉得是甚麼原因會產生該問題,也不曉得甚麼原因解了這一個問題
百敬老師覺得,跟形成執行計畫的任何一環有關,都可能可以改變這個警告或錯誤 ,再次感謝老師,自己筆記一下,免得將來又忘了呀。
我遇見的是一種特殊狀況,然而會出現該錯誤一定是資料庫引擎依據判斷產出的結果,下面連結是Rico對於No Join Predicate的研究好文
我是ROCK
rockchang@mails.fju.edu.tw