ORACLE在執行SQL時如果使用成本方式分析則所有的成本分析信息來源依靠於系統的統計分析表(DBA_TABLES
統計分析主要包括產生表及索引的統計信息
表的統計信息主要包括表的行數
索引的統計信息主要包括行數
另外ORACLE還可以統計列及數據不對稱信息
ORACLE執行成本分析時首先取出所應用表及索引的統計數據進行分析
實際分析
zl_cbqc和zl_yhjbqk都沒有建立統計信息
執行計劃:
SELECT STATEMENT
NESTED LOOPS
TABLE ACCESS FULL DLYX ZL_YHJBQK
TABLE ACCESS BY INDEX ROWID DLYX ZL_CBQC
INDEX UNIQUE SCAN DLYX 抄表區冊主鍵
執行計劃:
SELECT STATEMENT
NESTED LOOPS
TABLE ACCESS FULL DLYX ZL_CBQC
TABLE ACCESS BY INDEX ROWID DLYX ZL_YHJBQK
INDEX RANGE SCAN DLYX 區冊索引
在對兩個表進行了統計分析後
執行計劃:
SELECT STATEMENT
HASH JOIN
TABLE ACCESS FULL DLYX ZL_CBQC
TABLE ACCESS FULL DLYX ZL_YHJBQK
執行計劃:
SELECT STATEMENT
HASH JOIN
TABLE ACCESS FULL DLYX ZL_CBQC
TABLE ACCESS FULL DLYX ZL_YHJBQK
從以上測試可以明顯看出ORACLE的分析結果
第
第
相關技術
用analyze語句產生分析數據
分析表:analyze table zl_yhjbqk estimate statistics sample
分析索引:analyze index用戶資料表主鍵compute statistics
分析列:analyze table zl_yhjbqk compute statistics for columns hbs_bh
分析索引列:analyze table zl_yhjbqk compute statistics for all indexed columns
用sys
分析數據庫(包括所有的用戶對象和系統對象):analyze_database
分析用戶所有的對象(包括用戶方案內的表
用sys
分析數據庫(包括所有的用戶對象和系統對象):gather_database_stats
分析用戶所有的對象(包括表
分析表:gather_table_stats
分析索引:gather_index_stats
刪除數據庫統計信息:delete_database_stats
刪除用戶方案統計信息:delete_schema_stats
刪除表統計信息:delete_table_stats
刪除索引統計信息:delete_index_stats
刪除列統計信息:delete_column_stats
設置表統計信息:set_table_stats
設置索引統計信息:set_index_stats
設置列統計信息:set_column_stats
ORACLE推薦用戶采用sys
From:http://tw.wingwit.com/Article/program/Oracle/201311/18242.html