MySQL, MariaDB

MySQL/MariaDB 테이블의 Row count 구하기

SungWookKang 2019. 3. 24. 10:42
반응형

MySQL/MariaDB 테이블의 Row count 구하기

 

·      Version : MySQL 5.6

 

MySQL / MariaDB 에서 테이블의 Row count 구하는 방법에 대해서 알아본다. 기본적으로 단일 테이블에 대한 Row count 아래 스크립트로 간단히 확인할 있다.

SELECT 

     COUNT(*)

 FROM

    table_name;

 

특정 데이터베이스에 대해 모든 테이블의 Row count 구하는 경우 아래 스크립트를 사용할 있다. 조회하려는 데이터베이스의 테이블 정보를 참조하여 Row count 스크립트르 생성하여 호출하는 방식이다.

SELECT 

     CONCAT(GROUP_CONCAT(CONCAT('SELECT \'',table_name,'\' table_name, COUNT(*) rows FROM ', table_name)SEPARATOR ' UNION '),' ORDER BY table_name' ) INTO @sql 

 FROM

(

SELECT 

            table_name

FROM

            information_schema. tables

WHERE table_schema =  'DBNAME'

            AND table_type =  'BASE TABLE' ) table_list

 

 

PREPARE s FROM @sql ;

EXECUTE s;

DEALLOCATE PREPARE s;

 

MySQL 8.0 이상을 사용하는 경우 CTE 사용할 있다.

WITH table_list AS (

SELECT

            table_name

FROM information_schema. tables 

WHERE table_schema = 'DBNAME'

            AND table_type = 'BASE TABLE'

)

 

SELECT

            CONCAT(GROUP_CONCAT(CONCAT("SELECT '" ,table_name, "' table_name,COUNT(*) rows FROM " ,table_name) SEPARATOR " UNION "), ' ORDER BY table_name') INTO  @sql

FROM  table_list;

 

PREPARE s FROM @sql ;

EXECUTE s;

DEALLOCATE PREPARE s;

 

데이터베이스의 모든 테이블에 대한 Row count 얻는 가장 빠른 방법은 information_schema 데이터베이스에서 조회하는 것이다.

SELECT 

            table_name,

            table_rows

FROM

            information_schema. tables

WHERE table_schema =  'DBNAME'

ORDER BY table_name;

 


 

하지만 방법은 실제 데이터 행수와 동기화 되지 않기 때문에 정확하기 않을 있다. 이를 방지 하려면 데이터를 조회하기 전에 ANALYZE TABLE 명령을 실행하도록 한다.

ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ...

 

실제 정확한 행수가 필요하지 않는 경우information_schema 조회하는것이 데이터베이스 오버헤드를 줄일 있어 권장하는 방법이다.

 

 

[참고자료]

·       https://dev.mysql.com/doc/refman/5.7/en/information-schema.html

·       https://dev.mysql.com/doc/refman/5.7/en/analyze-table.html

 

2017-10-25 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

MySQL, MariaDB, MySQL row count, MySQL information_schema, Derived table, Group_concat, concat, table variables



반응형