본문 바로가기

wif LiNoUz/Oracle,Sql

INDEX_SKIP 예제

DROP TABLE  APPEND_TEST CASCADE CONSTRAINTS PURGE;

;


CREATE TABLE APPEND_TEST      AS

SELECT 1                      AS SKEWED_DATA

     ,  LPAD(ROWNUM-1,10)     AS ID

     , TRUNC(SQRT(ROWNUM-1))  AS ID_CHAR

     , RPAD('X',50, 'X')      AS FILLER

  FROM ALL_OBJECTS

 WHERE 1=0;

 

 

 CREATE        INDEX APPEND_TEST_01 ON APPEND_TEST(ID_CHAR);

 CREATE UNIQUE INDEX APPEND_TEST_PK ON APPEND_TEST(ID);

 ALTER TABLE APPEND_TEST ADD CONSTRAINT PK_APPEND_TEST PRIMARY KEY (ID);

 

 ALTER SESSION SET SKIP_UNUSABLE_INDEXES=TRUE;

 

 ALTER INDEX APPEND_TEST_PK UNUSABLE;

 ALTER INDEX APPEND_TEST_01 UNUSABLE;

 ALTER TABLE APPEND_TEST DISABLE PRIMARY KEY;

 

 

 

 

 

INSERT /*+ APPEND */

  INTO APPEND_TEST

SELECT 1                     AS SKEWED_DATA

     ,  LPAD(ROWNUM-1,10)    AS ID

     , TRUNC(SQRT(ROWNUM-1)) AS ID_CHAR

     , RPAD('X',50, 'X')     AS FILLER

  FROM ALL_OBJECTS

 WHERE ROWNUM <= 10;

 

SELECT INDEX_NAME

     , UNIQUENESS

     , STATUS

  FROM USER_INDEXES

WHERE TABLE_NAME = UPPER('APPEND_TEST');


TRUNCATE TABLE  APPEND_TEST;


ALTER SESSION SET SKIP_UNUSABLE_INDEXES=FALSE;

 

ALTER TABLE APPEND_TEST ENABLE PRIMARY KEY;

 

 

ALTER INDEX  APPEND_TEST_PK REBUILD;

ALTER INDEX  APPEND_TEST_01 REBUILD