2024년 6월 29일 토요일

ORACLE DB - INDEX

 
/***********************************************
  Oracle DB 인덱스 생성
   Oracle 19c 기준으로 작성되었습니다. 
***********************************************/



/***********************************************
 CUST, CUST_DTL 테이블, 인덱스 상태 조회
   STR 계정 접속
***********************************************/
SELECT
    OBJECT_TYPE,
    OBJECT_NAME,
    CREATED
FROM USER_OBJECTS
ORDER BY 2,1;



/***********************************************
 통계 정보 생성
   STR 계정 접속
***********************************************/
SELECT
    TABLE_NAME,
    TABLESPACE_NAME,
    LAST_ANALYZED
FROM USER_TABLES
ORDER BY 1;
-- 통계 정보 생성
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'STR', TABNAME=>'CUST');
EXEC DBMS_STATS.GATHER_TABLE_STATS(OWNNAME=>'STR', TABNAME=>'CUST_DTL');
-- 통계 정보 삭제
EXEC DBMS_STATS.DELETE_TABLE_STATS(OWNNAME=>'STR', TABNAME=>'CUST');
EXEC DBMS_STATS.DELETE_TABLE_STATS(OWNNAME=>'STR', TABNAME=>'CUST_DTL');



/***********************************************
 인덱스 추가 생성
  테이블명: CUST 
  인덱스명: CUST_X1(CUST_NM)
   STR 계정 접속
***********************************************/

SELECT *
FROM STR.CUST
WHERE CUST_NO = '20221125TKDN00000007';

-- CUST_NM 조회
-- 김영칠 3건, 김일영 2건, 김일삼 1건
SELECT *
FROM STR.CUST
WHERE CUST_NM = '김영칠';

CREATE INDEX STR.CUST_X1 ON STR.CUST
(CUST_NM)
TABLESPACE TS_STR_I;


SELECT
    TABLE_NAME,
    INDEX_NAME,
    COLUMN_NAME,
    COLUMN_POSITION
FROM USER_IND_COLUMNS
ORDER BY 1, 2;


/***********************************************
 FBI 인덱스 추가 생성
  테이블명: CUST 
  인덱스명: CUST_X1(CUST_NM)
   STR 계정 접속
***********************************************/
SELECT * 
FROM STR.CUST_DTL
WHERE MBL_NO = '015-0101-0101';
SELECT * 
FROM STR.CUST_DTL
WHERE MBL_NO = '01501010101';
SELECT
  MBL_NO,
  REPLACE(MBL_NO,'-','')
FROM STR.CUST_DTL;
SELECT * 
FROM STR.CUST_DTL
WHERE REPLACE(MBL_NO,'-','') = '01501010101';

CREATE INDEX STR.CUST_DTL_X1 ON STR.CUST_DTL
(REPLACE(MBL_NO,'-',''))
TABLESPACE TS_STR_I;
SELECT
    A.TABLE_NAME,
    A.INDEX_NAME,
    B.INDEX_TYPE,
    A.COLUMN_NAME,
    A.COLUMN_POSITION
FROM 
    USER_IND_COLUMNS A,
    USER_INDEXES B
WHERE A.TABLE_NAME = B.TABLE_NAME 
AND A.INDEX_NAME = B.INDEX_NAME
ORDER BY 1, 2;



-- 인덱스 삭제
DROP INDEX STR.CUST_X1;
DROP INDEX STR.CUST_DTL_X1;


[출처] DB보다


댓글 없음:

댓글 쓰기

ORACLE DB - INDEX

  /***********************************************   Oracle DB 인덱스 생성    Oracle 19c 기준으로 작성되었습니다.  *****************************************...