MySQL에서 INFORMATION_SCHEMA.COLUMNS 뷰를 활용하면 데이터베이스 내에서 컬럼(열) 개수가 가장 많은 테이블을 손쉽게 조회할 수 있습니다. 이 방법은 시스템 카탈로그 정보를 집계하는 방식으로, 별도의 복잡한 설정 없이 간단한 쿼리 하나로 원하는 결과를 얻을 수 있습니다.
기본 쿼리 문법
컬럼 수가 가장 많은 테이블을 찾는 기본적인 쿼리 문법은 다음과 같습니다.
SELECT TABLE_NAME, COUNT(*) AS anyAliasName FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME ORDER BY yourAliasName DESC LIMIT 1;
여기서 핵심은 GROUP BY TABLE_NAME으로 테이블별 컬럼 수를 집계한 뒤, ORDER BY ... DESC로 내림차순 정렬하고 LIMIT 1로 상위 1개만 가져오는 것입니다.
컬럼 수가 가장 많은 테이블 조회 예제
실제로 컬럼 수가 가장 많은 테이블을 조회하는 쿼리입니다. COUNT 값을 내림차순(DESC)으로 정렬하고 GROUP BY TABLE_NAME을 사용했기 때문에 아래와 같은 결과가 나옵니다.
mysql> SELECT TABLE_NAME, COUNT(*) as TOTAL_COUNT FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME ORDER BY TOTAL_COUNT DESC LIMIT 1;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-----------------------------------+-------------+ | TABLE_NAME | TOTAL_COUNT | +-----------------------------------+-------------+ | table_lock_waits_summary_by_table | 68 | +-----------------------------------+-------------+ 1 row in set (0.12 sec)
결과를 보면 table_lock_waits_summary_by_table 테이블이 총 68개의 컬럼을 보유하고 있어, 해당 데이터베이스에서 컬럼 수가 가장 많은 테이블임을 알 수 있습니다.
컬럼 수가 가장 적은 테이블 조회하기
반대로 정렬 조건만 오름차순(ASC)으로 변경하면, 컬럼 수가 가장 적은 테이블도 동일한 방식으로 조회할 수 있습니다.
mysql> SELECT TABLE_NAME, COUNT(*) as TOTAL_COUNT FROM INFORMATION_SCHEMA.COLUMNS GROUP BY TABLE_NAME ORDER BY TOTAL_COUNT ASC LIMIT 1;
실행 결과는 다음과 같습니다.
+-----------------------+-------------+ | TABLE_NAME | TOTAL_COUNT | +-----------------------+-------------+ | removenullrecordsdemo | 1 | +-----------------------+-------------+ 1 row in set (0.14 sec)
이처럼 INFORMATION_SCHEMA.COLUMNS와 GROUP BY, ORDER BY, LIMIT를 조합하면 테이블 구조를 손쉽게 분석할 수 있으며, DESC와 ASC 정렬 방향만 바꿔주면 최대·최소 컬럼 수를 가진 테이블을 모두 확인할 수 있습니다.