SELECT SUM(TABLE_ROWS)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '{your_db}';
Примечание из документов, хотя: таблицы For InnoDB, количество строки является только грубой оценкой используемый в оптимизации SQL. Необходимо будет использовать КОЛИЧЕСТВО (*) для точных количеств (который является более дорогим).
Можно, вероятно, поместить что-то вместе с таблица Tables. Я никогда не делал его, но похоже, что это имеет столбец для TABLE_ROWS и один для ИМЯ ТАБЛИЦЫ .
Для получения строк на таблицу можно использовать запрос как это:
SELECT table_name, table_rows
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '**YOUR SCHEMA**';
Основываясь на ответе @ Натана выше, но без необходимости «удалять окончательное объединение» и с возможностью сортировки вывода, я использую следующий SQL. Он генерирует еще один оператор SQL, который затем просто запускается:
select CONCAT( 'select * from (\n', group_concat( single_select SEPARATOR ' UNION\n'), '\n ) Q order by Q.exact_row_count desc') as sql_query
from (
SELECT CONCAT(
'SELECT "',
table_name,
'" AS table_name, COUNT(1) AS exact_row_count
FROM `',
table_schema,
'`.`',
table_name,
'`'
) as single_select
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = 'YOUR_SCHEMA_NAME'
and table_type = 'BASE TABLE'
) Q
Вам нужно достаточно большое значение серверной переменной group_concat_max_len
, но из MariaDb 10.2.4 оно должно по умолчанию равняться 1M.