數據庫之查詢優化

  (1) 來自pg文檔
  PostgreSQL使用的是基於成本的優化器(Cost based   optimizer)。理論上基於成本的優化器會計算用戶輸入的查詢語句的每一個合法的查詢計劃的執行成本,而後從中選擇成本最小的計劃做爲執行查詢語句的  最終計劃。在實際應用中,查詢語句的合法的查詢計劃的個數是隨查詢複雜度的增長呈指數增加的。對於過於複雜的查詢,若是遍歷每一個合法的查詢計劃,將會消耗  掉大量的時間,這是不能被用戶接受的,因此優化器不會遍歷每一個合法的查詢計劃,只會選擇一部分查詢計劃,從中找到執行成本最小的計劃。
  (2)調整QL查詢計劃
  在oracle中使用hint能夠調整SQL的執行計劃
  在postgresql能夠使用以下的方法進行調整
  使用set<option> to off/on;調整查詢計劃,參數以下:html

enable_seqscan是否走全表掃描sql

enable_hashjoin是否容許走hash鏈接oracle

enable_nestloop是否容許走nestloop鏈接oop

enable_mergejoin是否容許走合併鏈接post

enable_tidscan是否容許走tid掃描(相似oracle中的按rowid訪問)優化

enable_bitmapscan是否容許走bitmap掃描spa

enable_hashagg是否容許走hash彙集(也就是作group by時)postgresql

enable_indexscan是否容許走索引htm

enable_sort是否容許走排序排序

constraint_exclusion是否容許走分區

本文轉自:http://www.spasvo.com/news/html/20131220102647.html

相關文章
相關標籤/搜索