How to count all table record using store procedure

 CREATE DEFINER=`db_user`@`%` PROCEDURE `COUNT_ALL_RECORDS_BY_TABLE`()

LANGUAGE SQL

NOT DETERMINISTIC

CONTAINS SQL

SQL SECURITY DEFINER

COMMENT ''

BEGIN

DECLARE done INT DEFAULT 0;

DECLARE TNAME CHAR(255);


DECLARE table_names CURSOR for 

    SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_ROWS>0 and TABLE_SCHEMA = DATABASE();


DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;


OPEN table_names;   


DROP TABLE IF EXISTS TCOUNTS;

CREATE TEMPORARY TABLE TCOUNTS 

  (

    TABLE_NAME CHAR(255),

    RECORD_COUNT INT

  ) ENGINE = MEMORY; 



WHILE done = 0 DO


  FETCH NEXT FROM table_names INTO TNAME;


   IF done = 0 THEN

    SET @SQL_TXT = CONCAT("INSERT INTO TCOUNTS(SELECT '" , TNAME  , "' AS TABLE_NAME, COUNT(*) AS RECORD_COUNT FROM ", TNAME, ")");


    PREPARE stmt_name FROM @SQL_TXT;

    EXECUTE stmt_name;

    DEALLOCATE PREPARE stmt_name;  

  END IF;


END WHILE;


CLOSE table_names;


SELECT * FROM TCOUNTS ORDER BY Table_Name aSC;

# SELECT * FROM TCOUNTS ORDER BY RECORD_COUNT DESC;

END

Comments

Popular posts from this blog

MySQL Point in Time Recovery: How To Configure And How Does it Work?

MySQL Replication Switchover: Step-by-Step Guide

Mysql Commercial Mysqlbackup:How to take Differential or Incremental Backup and resotre using mysqlbackup utility in mysql 8.0.37 enterprise edition