Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 데이터베이스의 모든 테이블 행 수 한 번에 조회하는 방법

MySQL에서 각 테이블의 행 수 확인하기

MySQL 데이터베이스에 있는 모든 테이블의 행(레코드) 수를 하나씩 COUNT(*) 쿼리로 확인하는 것은 번거로운 작업입니다. 이럴 때 INFORMATION_SCHEMA.TABLES를 활용하면 단 하나의 쿼리로 데이터베이스 전체 테이블 목록과 각 테이블의 행 수를 한 번에 조회할 수 있습니다.

기본 문법

행 수를 조회하려면 information_schema.tables를 사용해야 합니다. 기본 문법은 다음과 같습니다.

SELECT table_name, table_rows
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'yourDatabaseName';

yourDatabaseName 부분에 실제 사용 중인 데이터베이스 이름을 넣으면 됩니다.

실제 실행 예제

'test'라는 이름의 데이터베이스에 위 쿼리를 적용해 보겠습니다. 아래 쿼리는 테이블 이름과 해당 테이블의 행 수를 함께 출력합니다.

mysql> SELECT table_name, table_rows
-> FROM INFORMATION_SCHEMA.TABLES
-> WHERE TABLE_SCHEMA = 'test';

실행 결과는 다음과 같습니다.

+------------------------------------+------------+
| TABLE_NAME | TABLE_ROWS |
+------------------------------------+------------+
| _student_trackerdemo | 0 |
| _studenttrackerdemo | 0 |
| add30minutesdemo | 0 |
| addcolumn | 0 |
| addingcurrencysymboldemo | 4 |
| addingdaysdemo | 8 |
| addoneday | 2 |
| agecalculatesdemo | 4 |
| agedemo | 4 |
| aliasdemo | 2 |
| ... | ... |
| yesterdaydatedemo | 2 |
| zipcodepadwithzerodemo | 4 |
+------------------------------------+------------+
243 rows in set (0.86 sec)

위와 같이 'test' 데이터베이스에는 총 243개의 테이블이 있으며, 각 테이블 이름과 행 수가 한눈에 표시됩니다. 결과가 많은 경우 ORDER BY table_name으로 정렬하거나 LIMIT 절을 추가해 원하는 범위만 확인하는 것도 좋은 방법입니다.

참고: InnoDB 테이블의 정확한 행 수 구하기

TABLE_ROWS 컬럼은 스토리지 엔진에 따라 값의 성격이 다릅니다. MyISAM 엔진은 정확한 값을 반환하지만, InnoDB는 대략적인(approximate) 추정치를 반환합니다. 따라서 특정 테이블의 정확한 행 수가 필요하다면 다음과 같이 COUNT(*)를 직접 실행하는 것이 안전합니다.

SELECT COUNT(*) FROM yourTableName;

전체 테이블을 대상으로 정확한 개수가 필요하다면, 먼저 INFORMATION_SCHEMA로 테이블 목록을 가져온 뒤 각 테이블에 대해 COUNT(*)를 반복 실행하는 방식을 활용할 수 있습니다.