ITPub博客

首页 > 应用开发 > IT综合 > 修改statistics!

修改statistics!

原创 IT综合 作者:warehouse 时间:2008-04-17 12:13:29 0 删除 编辑

可以通过dbms_stats提供的set_table_stats来修改表的统计信息从而使cbo产生我们希望的执行计划!

[@more@]

SQL> edit
已写入 file afiedt.buf

1 DECLARE
2 num_rows NUMBER;
3 num_blocks NUMBER;
4 avg_row_len NUMBER;
5 BEGIN
6 -- retrieve the values of table statistics on OE.ORDERS
7 -- statistics table name: OE.SAVESTATS statistics ID: TEST1
8 DBMS_STATS.GET_TABLE_STATS('XYS','TT',null,
9 'MY_STAT_TAB','TEST_20080416',
10 num_rows,num_blocks,avg_row_len);
11 -- print the values
12 DBMS_OUTPUT.PUT_LINE('num_rows='||num_rows||',num_blocks='||num_blocks||
13 ',avg_row_len='||avg_row_len);
14* END;
15 /
num_rows=5,num_blocks=5,avg_row_len=7

PL/SQL 过程已成功完成。

SQL> EDIT
已写入 file afiedt.buf

1 DECLARE
2 num_rows NUMBER :=100;
3 num_blocks NUMBER :=200;
4 avg_row_len NUMBER :=300;
5 BEGIN
6 -- retrieve the values of table statistics on OE.ORDERS
7 -- statistics table name: OE.SAVESTATS statistics ID: TEST1
8 DBMS_STATS.SET_TABLE_STATS('XYS','TT',null,
9 'MY_STAT_TAB','TEST_20080416',
10 num_rows,num_blocks,avg_row_len);
11 -- print the values
12 DBMS_OUTPUT.PUT_LINE('num_rows='||num_rows||',num_blocks='||num_blocks||
13 ',avg_row_len='||avg_row_len);
14* END;
SQL> /
num_rows=100,num_blocks=200,avg_row_len=300

PL/SQL 过程已成功完成。

SQL> DECLARE
2 num_rows NUMBER;
3 num_blocks NUMBER;
4 avg_row_len NUMBER;
5 BEGIN
6 -- retrieve the values of table statistics on OE.ORDERS
7 -- statistics table name: OE.SAVESTATS statistics ID: TEST1
8 DBMS_STATS.GET_TABLE_STATS('XYS','TT',null,
9 'MY_STAT_TAB','TEST_20080416',
10 num_rows,num_blocks,avg_row_len);
11 -- print the values
12 DBMS_OUTPUT.PUT_LINE('num_rows='||num_rows||',num_blocks='||num_blocks||
13 ',avg_row_len='||avg_row_len);
14 END;
15 /
num_rows=100,num_blocks=200,avg_row_len=300

PL/SQL 过程已成功完成。

SQL>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-1002661/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2007-12-07

  • 博文量
    717
  • 访问量
    5366291