MySQL.인덱스 정의서 추출 쿼리문 본문

IT Cafe+/MySQL

MySQL.인덱스 정의서 추출 쿼리문

고드림 2019. 10. 1. 10:52
SELECT A.TABLE_SCHEMA "DB", 
        A.TABLE_NAME "테이블ID",
        A.TABLE_COMMENT "테이블명",
        B.INDEX_NAME "인덱스명",
        B.COLUMN_NAME "컬럼ID",
        C.DATA_TYPE "데이터타입",
        CASE WHEN C.NUMERIC_SCALE IS NULL OR C.NUMERIC_SCALE = '0' 
             THEN CASE WHEN C.NUMERIC_PRECISION IS NOT NULL 
                  THEN C.NUMERIC_PRECISION 
                  ELSE C.CHARACTER_MAXIMUM_LENGTH END 
             ELSE CONCAT(C.NUMERIC_PRECISION, ',', C.NUMERIC_SCALE) 
        END "데이터사이즈",
        CASE WHEN B.INDEX_NAME = 'PRIMARY' THEN 'Y' ELSE 'N' END "PRIMARY",
        CASE WHEN B.NON_UNIQUE = 0 THEN 'Y' ELSE 'N' END "UNIQUE",
        B.SEQ_IN_INDEX "컬럼순서"
FROM information_schema.`TABLES` A 
 JOIN information_schema.STATISTICS B
   ON A.TABLE_SCHEMA = B.TABLE_SCHEMA 
  AND A.table_name = B.TABLE_NAME
 JOIN information_schema.`COLUMNS` C
   ON A.TABLE_SCHEMA = C.TABLE_SCHEMA 
  AND A.table_name = C.TABLE_NAME
  AND B.COLUMN_NAME = C.COLUMN_NAME
 WHERE A.table_schema = 'oyo'
   AND A.table_name = 'POM901'
ORDER BY A.TABLE_SCHEMA, A.TABLE_NAME, CASE WHEN B.INDEX_NAME = 'PRIMARY' THEN 1 ELSE B.INDEX_NAME END, B.SEQ_IN_INDEX;
Comments