上一篇我們介紹了查詢規(guī)劃模塊的總體流程和預處理部分的源碼。查詢規(guī)劃模塊再執(zhí)行完預處理之后,可以進入正式的查詢規(guī)劃處理流程了。

查詢規(guī)劃的主要工作由grouping_planner函數(shù)完成。在具體實現(xiàn)的時候,針對postgresql中獨有的繼承表,程序使用inheritance_planner函數(shù)來解決,該函數(shù)主要是先將繼承表的繼承關系變換為非繼承表來處理,然后仍然調用的是grouping_planner函數(shù)來完成查詢規(guī)劃的工作。

因此,我們說查詢規(guī)劃的主要工作在于grouping_planner函數(shù)。本篇的重點也是來解析該函數(shù)內部的調用關系和處理流程。



3.查詢規(guī)劃處理

這里大家真的要做好準備,因為grouping_planner函數(shù)本身就有將近1000行~

那什么,我們還是先上圖吧。有圖更清楚,文字太多大家也會暈的。以下是grouping_planner函數(shù)的流程圖。

大學生就業(yè)培訓,高中生培訓,在職人員轉行培訓,企業(yè)團訓

grouping_planner函數(shù)是生成查詢計劃樹的主要函數(shù)。該函數(shù)首先要考慮查詢計劃中是否有集合操作(可通過查詢樹的setOperation變量來判斷)。如果有則需要進行集合操作:遍歷setOperation,為其中的每一個子查詢生成計劃。而對于非集合操作,計劃的生成過程如下:

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網(wǎng)站設計培訓,網(wǎng)站建設培訓學習是年輕人改變自己的最好方式