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;