2010-10-07 5 views
1

IHello,запроса, чтобы подсчитать точное количество записей во всех таблицах

Я пытаюсь графа для каждой таблицы в моей базе данных MySQL сколько записей есть в нем.

Все моих столов оказался в InnoDB и Этого запроса

SELECT TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'myschema'; 

является пути слишком много оценки (Есть +846 записей, и он говорит мне, что есть только + - 400)

Есть ли способ подсчета более точного числа строк с похожим запросом? Не имеет значения, как долго длится запрос. (PS не используя PHP или подобный язык)

ответ

1

Если длина запроса не имеет значения то, что о выполнении следующих действий для каждой таблицы в базе данных:

select Count(*) from MyTable 
0

Если ваш собираетесь использовать системные представления, то вам нужно убедиться, что ваши статистические данные базы данных обновлены или количество строк будет потенциально неверным в представлениях системной схемы, таких как information_schema.x.

Используйте

select count(*) yourtable; 

, как указано в ответе выше, чтобы получить точное число

Analyze table yourtable; 

для обновления statisitcs проверьте счетчик в окне системы, они должны соответствовать по тыс указывают на количество строк.

см этот сайт для получения более подробной информации и способ сделать это для всей базы данных:

MySQL reference manual

0

Как писал в этой Answer

create table #rowcount (tablename varchar(128), rowcnt int) 
exec sp_MSforeachtable 
    'insert into #rowcount select ''?'', count(*) from ?' 
select * from #rowcount 
    order by tablename 
drop table #rowcount 
Смежные вопросы