MySQL에서 데이터베이스에 존재하는 특정 테이블의 행 수를 확인해야 하는 경우가 자주 있습니다. 이 글에서는 예제 테이블을 직접 만들고, INFORMATION_SCHEMA를 활용해 해당 테이블의 행 수를 조회하는 방법을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성하기
먼저 CREATE TABLE 문을 사용하여 테스트용 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> LastName varchar(100)
-> );
Query OK, 0 rows affected (0.68 sec)2. 샘플 데이터 삽입하기
INSERT 명령어를 사용해 테이블에 여러 개의 레코드를 추가합니다.
mysql> insert into DemoTable values('Smith');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Miller');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('Taylor');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Brown');
Query OK, 1 row affected (0.29 sec)3. 저장된 전체 레코드 조회하기
SELECT 문으로 테이블에 저장된 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
출력 결과
+----------+ | LastName | +----------+ | Smith | | Miller | | Taylor | | Brown | +----------+ 4 rows in set (0.00 sec)
총 4개의 행이 정상적으로 저장된 것을 확인할 수 있습니다.
4. INFORMATION_SCHEMA로 테이블의 행 수 조회하기
MySQL은 INFORMATION_SCHEMA.TABLES라는 시스템 뷰를 제공합니다. 이곳에는 데이터베이스 내 모든 테이블의 메타데이터가 저장되어 있으며, TABLE_ROWS 컬럼을 통해 각 테이블의 대략적인 행 수를 확인할 수 있습니다.
다음은 'web' 데이터베이스에 있는 'DemoTable' 테이블의 행 수를 조회하는 쿼리입니다.
mysql> select table_rows from INFORMATION_SCHEMA.tables
-> where table_schema='web' and table_name='DemoTable';출력 결과
+------------+ | TABLE_ROWS | +------------+ | 4 | +------------+ 1 row in set (0.16 sec)
참고: COUNT(*)와의 차이점
INFORMATION_SCHEMA.TABLES의 TABLE_ROWS 값은 InnoDB 스토리지 엔진에서 통계 정보 기반의 근사치(approximate value)입니다. 따라서 실제 행 수와 약간의 오차가 있을 수 있습니다.
정확한 행 수가 필요하다면 다음과 같이 COUNT(*)를 사용하는 것이 좋습니다.
mysql> select count(*) from DemoTable;
대용량 테이블에서 빠르게 근사치를 확인할 때는 INFORMATION_SCHEMA를, 정확한 개수가 필요할 때는 COUNT(*)를 활용하면 상황에 맞게 효율적으로 작업할 수 있습니다.