oracle 如何表分析,ORACLE的表分析策略
對表進行分析,通常情況下可以對表,索引,列進行單獨分析,或者進行組合分析,但這三者哪些是相對重要的,哪些分析顯得不那么重要?通過本篇文章的實驗相信大家也會對直方圖有更一步的了解.
1.首先創(chuàng)建測試表,并插入100000條數(shù)據(jù)
SQL> create table test(id number,nick varchar2(30));
Table created.
SQL> begin
2????? for i in 1..100000 loop
3??????????? insert into test(id) values(i);
4????? end loop;
5????? commit;
6? end;
7? /
PL/SQL procedure successfully completed.
更新nick字段,使數(shù)據(jù)發(fā)生嚴重傾斜
SQL> update test set nick='abc' where rownum<99999;
99998 rows updated.
SQL> commit;
Commit complete.
SQL> create index idx_test_nick on test(nick);
Index created.
SQL> update test set nick='def' where nick is null;
2 rows updated.
SQL> commit;
Commit complete.
--只對索引進行分析
SQL> analyze index idx_test_nick compute statistics;
Index analyzed.
SQL> select index_name,LEAF_BLOCKS,DISTINCT_KEYS,NUM_ROWS from user_indexes where index_name='IDX_TEST_NICK';
INDEX_NAME???????????????????? LEAF_BLOCKS DISTINCT_KEYS?? NUM_ROWS
------------------------------ ----------- ------------- ----------
IDX_TEST_NICK????????????????????????? 210???????????? 2???? 100000
SQL> select COLUMN_NAME,NUM_BUCKETS,num_distinct from USER_tab_columns where table_name='TEST';
COLUMN_NAME??????????????????? NUM_BUCKETS NUM_DISTINCT
------------------------------
總結(jié)
以上是生活随笔為你收集整理的oracle 如何表分析,ORACLE的表分析策略的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 织梦 mail.class.php,详解
- 下一篇: java oracle 乐观锁,orac