Получите количества записей для всех таблиц в базе данных MySQL

316
задан DineshDB 4 April 2018 в 02:59
поделиться

3 ответа

SELECT SUM(TABLE_ROWS) 
     FROM INFORMATION_SCHEMA.TABLES 
     WHERE TABLE_SCHEMA = '{your_db}';

Примечание из документов, хотя: таблицы For InnoDB, количество строки является только грубой оценкой используемый в оптимизации SQL. Необходимо будет использовать КОЛИЧЕСТВО (*) для точных количеств (который является более дорогим).

379
ответ дан JayRizzo 23 November 2019 в 01:04
поделиться

Можно, вероятно, поместить что-то вместе с таблица Tables. Я никогда не делал его, но похоже, что это имеет столбец для TABLE_ROWS и один для ИМЯ ТАБЛИЦЫ .

Для получения строк на таблицу можно использовать запрос как это:

SELECT table_name, table_rows
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = '**YOUR SCHEMA**';
165
ответ дан gpojd 23 November 2019 в 01:04
поделиться

Основываясь на ответе @ Натана выше, но без необходимости «удалять окончательное объединение» и с возможностью сортировки вывода, я использую следующий 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.

0
ответ дан 23 November 2019 в 01:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: