日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

oracle更新统计信息执行计划,为准确生成执行计划更新统计信息-analyze与dbms_stats...

發布時間:2025/4/5 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle更新统计信息执行计划,为准确生成执行计划更新统计信息-analyze与dbms_stats... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如果我們想讓CBO利用合理利用數據的統計信息,正確判斷執行任何SQL查詢時的最快途徑,需要及時的使用analyze命令或者dbms_stats重新統計數據的統計信息.

例如索引跳躍式掃描(INDEX SKIP SCAN)例子中,如果不對表EMPLOYEE 及索引收集一下統計信息,就不是INDEX SKIP SCAN策略了。

在oracle 8i以前,主要是用ANALYZE命令。在ORACLE 8I以后,又引入了DBMS_STATS存儲包來進行分析。幸運的是從ORACLE 10G以后,分析工作變成自動的了,這減輕的DBA的負擔

分析統計信息

analyze table 一般可以指定分析: 表,所有字段,所有索引字段,所有索引。 若不指定則全部都分析。

---table統計信息

analyzetable EMP compute statistics for table;---column統計信息

analyzetable EMP compute statistics for allcolumns;---索引統計信息

analyzetable EMP compute statistics for allindexes;---索引列統計信息

analyzetable EMP compute statistics for allindexed columns;---效果等于 analyze table tablename compute statistics for table for all indexes for all columns

analyzetable tablename compute statistics

查看統計信息

for table的統計信息存在于視圖:user_tables 、all_tables、dba_tables

for all indexes的統計信息存在于視圖: user_indexes 、all_indexes、dba_indexes

for all columns的統計信息存在于試圖:user_tab_columns、all_tab_columns、dba_tab_columns

SCOTT@PDBORCL> analyze table EMP compute statistics for table;

表已分析。

SCOTT@PDBORCL> analyze table EMP compute statistics for allcolumns;

表已分析。

SCOTT@PDBORCL> analyze table EMP compute statistics for allindexes;

表已分析。

SCOTT@PDBORCL> select table_name,num_rows from user_tables where table_name = 'EMP';

TABLE_NAME NUM_ROWS----------- -----------

EMP14SCOTT@PDBORCL> select index_name,uniqueness from user_indexes where table_name = 'EMP';

INDEX_NAME UNIQUENES-------- ---------

PK_EMPUNIQUESCOTT@PDBORCL> select column_name,data_type from user_tab_columns where table_name = 'EMP';

COLUMN_NAME DATA_TYPE-------------------------

EMPNONUMBERENAMEVARCHAR2JOBVARCHAR2MGRNUMBERHIREDATE DATE

SALNUMBERCOMMNUMBERDEPTNONUMBER已選擇8行。

SCOTT@PDBORCL> ^A

刪除統計信息

會刪除emp所有的statistics。

analyze table emp delete statistics

刪除只是某些列變為空,如emp表的行數為空了

SCOTT@PDBORCL> analyze table emp compute statistics;

表已分析。

SCOTT@PDBORCL> select table_name,num_rows from user_tables where table_name = 'EMP';

TABLE_NAME NUM_ROWS-------- ----------

EMP14SCOTT@PDBORCL> analyze table emp delete statistics;

表已分析。

SCOTT@PDBORCL> select table_name,num_rows from user_tables where table_name = 'EMP';

TABLE_NAME NUM_ROWS-------- ----------

EMP

SCOTT@PDBORCL>

dbms_stats

dbms_stats能良好地估計統計數據(尤其是針對較大的分區表),并能獲得更好的統計結果,最終制定出速度更快的SQL執行計劃。

語法:

dbms_stats.gather_table_stats (

ownname varchar2, tabname varchar2, partname varchar2, estimate_percent number, block_sample boolean, method_opt varchar2, degree number, granularity varchar2, cascadeboolean, stattab varchar2, statid varchar2, statown varchar2, no_invalidate boolean, force boolean );

dbms_stats.delete_table_stats 用于刪除統計信息。

例子:

------刪除統計信息SCOTT@PDBORCL> exec dbms_stats.delete_table_stats (ownname => 'scott',tabname => 'emp');

PL/SQL 過程已成功完成。----查詢統計信息

SCOTT@PDBORCL> select table_name,num_rows from user_tables where table_name = 'EMP';

TABLE_NAME NUM_ROWS-------- ----------

EMP---獲取統計信息SCOTT@PDBORCL> exec dbms_stats.gather_table_stats (ownname => 'scott',tabname => 'emp');

PL/SQL 過程已成功完成。---重新查新統計信息

SCOTT@PDBORCL> select table_name,num_rows from user_tables where table_name = 'EMP';

TABLE_NAME NUM_ROWS-------- ----------

EMP 14SCOTT@PDBORCL>

參考:

總結

以上是生活随笔為你收集整理的oracle更新统计信息执行计划,为准确生成执行计划更新统计信息-analyze与dbms_stats...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。