如何對一個oracle11gsql語句進行統計分析
可以通過district來取出字段,之後通過count計算總數量。
sql:select count(district id) from tablename;
如果id字段沒有空值的話,可以通過count統計字段的總數量(字段內容可能重複)。
sql:select count(id) from tablename;
如何在ORACLE係統中對表進行統計分析
begin
dbms_stats.gather_table_stats( ownname=>'XXXX',tabname => 'XXXX' ,ESTIMATE_PERCENT=>100,degree=>8, CASCADE=>true);
end;
隻知道對Oracle數據庫的單表做表分析語句是 analyze table 表名 compute statistics
全表還是全庫啊?
全表的話,可以針對某個用戶來分析:
SQL> exec dbms_stats.gather_schema_stats(ownname=>'scott',options=>'gather auto',estimate_percent=>dbms_stats.auto_sample_size,degree=>6); 具體的參數可以根據實際情況修改,也可以加其他的參數進來
全庫的話,10g會自動分析的,但是也可以收到分析,統計分析要消耗大量資源,建議不要在業務繁忙時做:
SQL> exec dbms_stats.gather_system_stats('start'); 開始
SQL> exec dbms_stats.gather_system_stats('stop'); 結束
SQL> exec dbms_stats.gather_system_stats('interval',interval=>N); 一直工作N分鍾
oracle分析表有什麼用
Oracle中分析表的作用
1.分析更新表的統計信息,,有可能導致執行計劃改變..
2.以的analyze table abc compute statistics;這條為例,生成的統計信息會存在於user_tables這個視圖,查看一下select * from user_tables where table_name='ABC';
觀察一下NUM_ROWS,BLOCKS,AVG_SPACE,AVG_ROW_LEN幾列你就會明白,這就是變化。分析完表之後,會發現DBA_tables 視圖中,以前很多列值是空的,現在開始有數據了。這些數據就是分析表得到的.
3.怎麼樣分析表或索引
命令行方式可以采用analyze命令
如Analyze table tablename compute statistics;
Analyze index|cluster indexname estimate statistics;
ANALYZE TABLE tablename COMPUTE STATISTICS
FOR TABLE
FOR ALL [LOCAL] INDEXES
FOR ALL [INDEXED] COLUMNS;
ANALYZE TABLE tablename DELETE STATISTICS
ANALYZE TABLE tablename VALIDATE REF UPDATE
ANALYZE TABLE tablename VALIDATE STRUCTURE
[CASCADE]|[INTO TableName]
ANALYZE TABLE tablename LIST CHAINED ROWS [INTO TableName]
等等。
如果想分析整個用戶或數據庫,還可以采用工具包,可以並行分析
Dbms_utility(8i以前的工具包)
Dbms_stats(8i以後提供的工具包)
如
dbms_stats.gather_schema_stats(User,estimate_percent=>100,cascade=> TRUE);
dbms_stats.gather_table_stats(User,TableName,degree => 4,cascade => true);
這是對命令與工具包的一些總結
(1)、對於分區表,建議使用DBMS_STATS,而不是使用Analyze語句。
a) 可以並行進行,對多個用戶,多個Table
b) 可以得到整個分區表的數據和單個分區的數據。
c) 可以在不同級別上Compute Statistics:單個分區,子分區,全表,所有分區
d) 可以倒出統計信息
e) 可以用戶自動收集統計信息
(2)、DBMS_STATS的缺點
a) 不能Validate Structure
b) 不能收集CHAINED ROWS, 不能收集CLUSTER TABLE的信息,這兩個仍舊需要使用Analyze語句。
c) DBMS_STATS 默認不對索引進行Analyze,因為默認Cascade是False,需要手工指定為True
(3)、對於Oracle 9裏麵的External Table,Analyze不能使用,隻能使用DBMS_STATS來收集信息.
oracle數據庫 ,想統計一個用戶下,所有表的記錄的總條數,用什麼語句可以實現?
analyze table table_name COMPUTE STATISTICS
對表分析後在使用
select count(^) from table_name
如果你的table_name 有主鍵 ID
select count(ID) from table_name 在統計的時候會用到主鍵索引
oracle日結統計,求大神幫忙分析一下統計SQL如何書寫
表應該加上注釋,要不沒法寫。
大概思路是這樣的,首先統計出每一天每一個員工最晚一次的日結時間。這裏分為兩種情況,周5和其他日期需要分別判斷。
然後將用戶表和剛才的日結彙總表進行左連接,日結彙總表為空的部分就意味著該員工沒有日結,外麵套一層,count一下即可。
oracle為什麼要搜集統計信息
alter system set events '10053 trace name context forever,level 2';
select * from scott.dept;
alter system set events '10053 trace name context off';
到$ORACLE_BASE/diag/rdbms/$ORACLE_SID/trace/ (11g路徑)找一個叫 *ora*.trc (默認是這個)的文件,裏麵在生成執行計劃的時候會用的下麵的這個就是統計信息裏麵的信息
...
***************************************
BASE STATISTICAL INFORMATION
***********************
Table Stats::
Table: DEPT Alias: DEPT
#Rows: 4 #Blks: 5 AvgRowLen: 20.00 ChainCnt: 0.00
Index Stats::
Index: PK_DEPT Col#: 1
LVLS: 0 #LB: 1 #DK: 4 LB/K: 1.00 DB/K: 1.00 CLUF: 1.00
...
這個是表及索引的基礎信息,生成執行計劃時,通過一係列參數來計算成本,這就是CBO用獲得最低成本的計劃的依據之一 如果統計信息準確則可以生成較好的計劃,如果統計信息不準確 生成的計劃就不一定是最優的
怎麼樣停止oracle的統計分析
在sysdba下執行:
exec DBMS_SCHEDULER.DISABLE('GATHER_STATS_JOB');
就可以了。
oracle表分析命令dbms_stats分析表使用問題
主要收集如行數,列的distince、表段大小等等
如果做表關聯查詢,統計信息也會用到
一般要分析,不然統計信息不準可能走錯執行計劃,比如一個分區原先1行,插入後變幾億行,這時統計信息不準確的話可能就走錯誤執行計劃了。
在oracle生產庫中,我的一個表的數據有10億行記錄,怎麼快速計算有多少行,不要告訴我用count(*)之類的答案
oracle 有個數據字典 表分析之後 會記錄行數 貌似是 all_tables
轉載請注明出處句子大全網 » 如何對一個oracle11gsql語