私はこの質問に私を導いた同じ問題を抱えていました。
computerGuy12345の回答のおかげで、コピー&ペーストせずにこれを行うストアドプロシージャを思いつきました。彼が言ったように、これは各テーブルをスキャンし、時間がかかる可能性があることに注意してください。
DELIMITER $$
CREATE PROCEDURE `all_tables_rowcount`(databaseName VARCHAR(250))
BEGIN
DECLARE p_done INT DEFAULT FALSE;
DECLARE p_queryString varchar(250) ;
DECLARE p_cur CURSOR FOR SELECT queryString FROM tmp.tableCountQueries;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET p_done = TRUE;
DROP TEMPORARY TABLE IF EXISTS tmp.tableCountQueries;
DROP TEMPORARY TABLE IF EXISTS tmp.tableCounts;
CREATE TEMPORARY TABLE tmp.tableCounts(TableName varchar(250), RowCount BIGINT) ;
CREATE TEMPORARY TABLE tmp.tableCountQueries(queryString varchar(250)) AS
(
SELECT CONCAT(
'INSERT INTO tmp.tableCounts(TableName, RowCount) SELECT "',
table_name,
'", COUNT(*) AS RowCount FROM ',
table_schema,
'.',
table_name
) AS queryString
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = databaseName
) ;
OPEN p_cur;
read_loop: LOOP
FETCH p_cur INTO p_queryString;
IF p_done THEN
LEAVE read_loop;
END IF;
SET @queryString = p_queryString ;
PREPARE rowcountTable FROM @queryString;
EXECUTE rowcountTable ;
END LOOP;
SELECT * FROM tmp.tableCounts ;
END