欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

oracle中搜集表与列统计信息

更新时间: 2014-01-05 02:05:30 责任编辑: Author_N1

 

Oracle中收集表与列统计信息


  我们在分析某些语句的性能时,会分析一些信息。像表、列、索引、直方图等等,本篇主要讲表与列的统计信息收集与分析。

  一、表统计信息

  首先创建一个测试表,更新一些数据,加入一些约束:

  CREATE TABLE t

  AS

  SELECT rownum AS id,

  round(dbms_random.normal*1000) AS val1,

  100 + round(ln(rownum/3.25+2)) AS val2,

  100 + round(ln(rownum/3.25+2)) AS val3,

  dbms_random.string('p',250) AS pad

  FROM All_Objects

  WHERE ROWNUM<=1000

  ORDER BY dbms_random.value;

  UPDATE T SET VAL1 = NULL WHERE VAL1 < 0;

  ALTER TABLE t ADD CONSTRAINT t_pk PRIMARY KEY(ID);

  CREATE INDEX t_val1_i ON t(val1);

  CREATE INDEX t_val2_i ON t(val2);

  BEGIN

  DBMS_STATS.GATHER_TABLE_STATS(OWNNAME => USER,

  TABNAME => 'T',

  ESTIMATE_PERCENT => 100,

  METHOD_OPT => 'for all columns size skewonly',

  CASCADE => TRUE);

  END;

  此时表已经搜集了统计信息,查看表的统计信息用user_tab_statistics。

  SELECT NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, CHAIN_CNT, AVG_ROW_LEN

  FROM USER_TAB_STATISTICS

  WHERE TABLE_NAME = 'T';

  NUM_ROWSBLOCKSEMPTY_BLOCKSAVG_SPACECHAIN_CNTAVG_ROW_LEN

  100044000265

  关于每一列的解释联机文档上都有,这里blocks是高水位以下的数据块数,empty_blocks是高水位以上的数据块数。Dbms_stats不计算EMPTY_BLOCKS、AVG_SPACE、CHAIN_CNT。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:05:30
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/5508/
本文WWW.DOC100.NET DOC100.NET版权所有。