首页 > 应用开发 > IT综合 > 修改statistics!
可以通过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/ ,如需转载,请注明出处,否则将追究法律责任。