資料庫之查詢最佳化
(1) 來自pg文件
PostgreSQL使用的是基於成本的最佳化器(Cost based
optimizer)。理論上基於成本的最佳化器會計算使用者輸入的查詢語句的每個合法的查詢計劃的執行成本,然後從中選擇成本最小的計劃作為執行查詢語句的
最終計劃。在實際應用中,查詢語句的合法的計劃的個數是隨查詢複雜度的增加呈指數增長的。對於過於複雜的查詢,如果遍歷每個合法的查詢計劃,將會消耗 掉大量的時間,這是不能被使用者接受的,所以最佳化器不會遍歷每個合法的查詢計劃,只會選擇一部分查詢計劃,從中找到執行成本最小的計劃。
(2)調整QL查詢計劃
在oracle中使用hint可以調整SQL的,
在postgresql可以使用如下的方法進行調整
使用set to off/on;調整查詢計劃,引數如下:
enable_seqscan是否走全表掃描
enable_hashjoin是否允許走hash連線
enable_nestloop是否允許走nestloop連線
enable_mergejoin是否允許走合併連線
enable_tidscan是否允許走tid掃描(類似oracle中的按rowid訪問)
enable_bitmapscan是否允許走bitmap掃描
enable_hashagg是否允許走hash聚集(也就是做group by時)
enable_indexscan是否允許走索引
enable_sort是否允許走排序
constraint_exclusion是否允許走分割槽
本文轉自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29379530/viewspace-2127286/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料庫查詢和資料庫(MySQL)索引的最佳化建議資料庫MySql索引
- 資料庫AR之關聯查詢資料庫
- Django筆記二十八之資料庫查詢最佳化彙總Django筆記資料庫
- 資料庫全表查詢之-分頁查詢優化資料庫優化
- 資料庫查詢資料庫
- 資料庫 - 資料查詢資料庫
- 50種方法最佳化SQL Server資料庫查詢SQLServer資料庫
- 資料庫資料的查詢----連線查詢資料庫
- 大資料量資料查詢最佳化大資料
- 資料統計查詢最佳化
- Laravel Passport OAuth 資料庫查詢改快取最佳化LaravelPassportOAuth資料庫快取
- 資料庫系列:MySQL慢查詢分析和效能最佳化資料庫MySql
- 資料庫的查詢最佳化技術 (聯接收集)資料庫
- 資料庫高階查詢之子查詢資料庫
- 求助:資料庫查詢資料庫
- ThinkPHP 資料庫查詢PHP資料庫
- 查詢資料庫大小資料庫
- 資料庫排序查詢資料庫排序
- Jemter查詢資料庫資料庫
- (十三)資料庫查詢處理之QueryExecution(2)資料庫
- 資料庫學習筆記之查詢表資料庫筆記
- 資料庫 - 連線查詢、巢狀查詢、集合查詢資料庫巢狀
- 資料庫基礎查詢--單表查詢資料庫
- 資料庫查詢優化:巢狀查詢資料庫優化巢狀
- MongoDB之資料查詢(資料排序)MongoDB排序
- php基礎之連線mysql資料庫和查詢資料PHPMySql資料庫
- 資料庫查詢語句資料庫
- 資料庫查詢優化資料庫優化
- mysql資料庫多表查詢MySql資料庫
- mysql資料庫容量查詢MySql資料庫
- 資料庫查詢步驟資料庫
- 資料庫查詢配置值資料庫
- (十) 資料庫查詢處理之排序(sorting)資料庫排序
- (十二)資料庫查詢處理之Query Execution(1)資料庫
- MySQL資料庫基礎——多表查詢:子查詢MySql資料庫
- MongoDB之資料查詢操作MongoDB
- MongoDB資料庫中查詢資料(下)MongoDB資料庫
- 資料庫系統概述之資料庫最佳化資料庫