遺傳查詢規劃器(GEQO)是一種使用啟發式搜索來進行查詢規劃的算法。它可以降低對于復雜查詢(連接很多表的查詢)的規劃時間,但是代價是它產生的計劃有時候要差于使用窮舉搜索算法找到的計劃。
geqo (boolean)
允許或禁止遺傳查詢優化。默認是啟用。在生產環境中通常最好不要關閉它。geqo_threshold變量提供了對 GEQO 更細粒度的空值。
geqo_threshold (integer)
只有當涉及的FROM項數量至少有這么多個的時候,才使用遺傳查詢優化(注意一個FULL OUTER JOIN只被計為一個FROM項)。默認值是 12。對于更簡單的查詢,通常會使用普通的窮舉搜索規劃器,但是對于有很多表的查詢窮舉搜索會花很長時間,通常比執行一個次優的計劃帶來的懲罰值還要長。因此,在查詢尺寸上的一個閾值是管理 GEQO 使用的一種方便的方法。
geqo_effort (integer)
控制GEQO 中規劃時間和查詢計劃質量之間的折中。這個變量必須是位于 1 到 10 之間的一個整數。默認值是 5。更大的值會增加花在查詢規劃上的時間,但是同時也增加了選擇一個高效查詢計劃的可能性。geqo_effort實際并不直接做任何事情;它只是被用來計算其他影響 GEQO 行為的變量(如下所述)的默認值。如果你愿意,你可以手工設置其他參數。
geqo_pool_size (integer)
控制GEQO 使用的池尺寸,它就是遺傳種群中的個體數目。它必須至少為 2,且有用的值通常在 100 到 1000 之間。如果它被設置為零(默認設置)則會基于geqo_effort和查詢中表的數量選擇一個合適的值。
geqo_generations (integer)
控制GEQO 使用的代數,也是算法的迭代次數。它必須至少為 1,并且有用值的范圍和池尺寸相同。如果它被設置為零(默認設置)則會基于geqo_pool_size選擇一個合適的值。
geqo_selection_bias (floating point)
控制GEQO 使用的選擇偏好。選擇偏好是種群中的選擇壓力。值可以是 1.5 到 2.0 之間,后者是默認值。
geqo_seed (floating point)
控制GEQO 使用的隨機數生成器的初始值,隨機數生成器用于在連接順序搜索空間中選擇隨機路徑。該值可以從 0 (默認值)到 1。變化該值會改變被探索的連接路徑集合,并且可能導致找到一個更好或更差的路徑。