coolguyの日記: 8i,9i 2
日記 by
coolguy
analyze
...
dbms_stats.gather_*_stats()
OracleSQLチューニング Oracleの潜在能力を引き出す実践的チューニングガイド
凄くいい参考書なんだけどなぁ……
はい、マニュアル読みます。。。
analyze
...
dbms_stats.gather_*_stats()
OracleSQLチューニング Oracleの潜在能力を引き出す実践的チューニングガイド
凄くいい参考書なんだけどなぁ……
はい、マニュアル読みます。。。
ナニゲにアレゲなのは、ナニゲなアレゲ -- アレゲ研究家
すくりぷと (スコア:1)
spool tbl_lst
set serveroutput on size 100000
DECLARE
CURSOR csr_tblname IS
SELECT table_name FROM user_tables;
tblname varchar2(30);
sql_stmt varchar2(500);
tblcnt number;
rowcnt number;
BEGIN
SELECT COUNT(*) INTO tblcnt FROM user_tables;
OPEN csr_tblname;
FOR i IN 1..tblcnt LOOP
FETCH csr_tblname INTO tblname;
sql_stmt := 'select count(*) from ' || tblname;
EXECUTE IMMEDIATE sql_stmt INTO rowcnt ;
DBMS_OUTPUT.PUT_LINE('dbms_stats.gather_table_stats(''****'', ''' || tblname || ''', '''', dbms_stats.auto_sample_size, FALSE, ''FOR ALL COLUMNS SIZE 1'', '''', ''DEFAULT'', TRUE, '''', '''', '''', FALSE); --rowcnt=' || rowcnt);
-- IF rowcnt 10000 THEN
-- DBMS_OUTPUT.PUT_LINE('analyze table ' || tblname || ' calculate statistics;' || ' --rowcnt=' || rowcnt);
-- ELSE
-- DBMS_OUTPUT.PUT_LINE('analyze table ' || tblname || ' estimate statistics 10 PERSENT;' || ' --rowcnt=' || rowcnt);
-- END IF;
END LOOP;
CLOSE csr_tblname;
END;
/
spool off
quit
##########
dbms_stats.gather_schima_stats() でいいんじゃねーの?
カウントする必要もなし
serveroutput の size のデフォルトが SQL*Plus での実行時は
2000 ってのに気付かずにバッファオーバーフローの原因を
ロジックにあると思い込んで悩んだ<まぬけ
# 常識ですか。。。
--
8iのマニュアル、よく見たら 8i から統計情報の収集は
dbms_stats パッケージ使えって書いてあるやん(汗
# analyze なんて、いつの時代の知識、前提に組んでんだよ、ボケ
# 大馬鹿>おれ
Re:すくりぷと (スコア:1)
あー、もう馬鹿!!