1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[Analyzed 확인 방법]
 1-1. 테이블 통계정보
   SELECT TABLE_NAME
   , BLOCKS  -- 해당 데이터가 저장되어 있는 블록 수.
   , NUM_ROWS  -- 데이터 행 수.
   , AVG_ROW_LEN  -- 하나의 행의 평균 길이.
   , TO_CHAR( LAST_ANALYZED, 'YYYYMMDD' )
   FROM USER_TABLES
   [WHERE TABLE_NAME = '테이블명']
 
 1-2. 테이블 통계정보
   SELECT TABLE_NAME
   , COLUMN_NAME  -- 컬럼명
   , LOW_VALUE       -- 해당 컬럼에 저장되어 있는 최소값.
   , HIGH_VALUE      -- 해당 컬럼에 저장되어 있는 최대값.
   , NUM_DISTINCT   -- 유일한 값의 수. (히스토그램 기준)
   FROM USER_TAB_COLUMNS
   [WHERE TABLE_NAME = '테이블명']
 
2. 인덱스 통계정보
   SELECT INDEX_NAME
   , BLEVEL                        -- 인덱스의 깊미(Depth)
   , LEAF_BLOCKS              -- 리프 블록의 수.
   , DISTINCT_KEYS            -- 인덱스 컬럼의 유일한 값의 수.
   , CLUSTERING_FACTOR  -- 조건을 만족하는 데이터를 검색할 때 인덱스 키 값이 각 블록에 얼마나 잘 분산 저장되어 있는지를 나타내는 정도.
   , NUM_ROWS                 -- 전체 행수.
   , TO_CHAR( LAST_ANALYZED, 'YYYYMMDD' )
   FROM USER_INDEXES
 
[특정 Table만 Analyze 하는 방법]
ANALYZE TABLE DOCUMENT COMPUTE STATISTICS
  
ANALYZE INDEX XPKDOCBOX COMPUTE STATISTICS
  
[전체 Table Analyze 하는 간단한 방법]
1. vi analyze_all.sql
    SELECT 'analyze table || table_name || estimate statistics;' FROM USER_TABLES
  
2. @analyze_all.sql
  
3. set heading off
     set echo off
     set feedback off
     set pagesize 300  (line 이 300 미만일 경우)
     spool analyze_table.sql
     /
     spool off
  
4. vi analyze_table.sql
    필요없는 Line 제거 및 정리
  
5. @analyze_table.sql
  
 
[전체 Index Analyze 하는 간단한 방법]
1. vi analyze_all.sql
    SELECT 'analyze index || index_name || estimate statistics;' FROM USER_INDEXES
  
2. @analyze_all.sql
  
3. set heading off
     set echo off
     set feedback off
     set pagesize 300  (line 이 300 미만일 경우)
     spool analyze_index.sql
     /
     spool off
  
4. vi analyze_index.sql
    필요없는 Line 제거 및 정리
  
5. @analyze_index.sql


+ Recent posts