Ответ 1
Замените "schema_name"
именем одной из ваших баз данных.
И использовать одиночные кавычки для строковых литералов, а не двойные кавычки.
На веб-сайте Как рассчитать размер базы данных MySQL есть два запроса:
Определить размеры всех баз данных
SELECT table_schema "Data Base Name", SUM( data_length + index_length) / 1024 / 1024
"Data Base Size in MB" FROM information_schema.TABLES GROUP BY table_schema ;
Определить размер всех таблиц в базе данных
SELECT TABLE_NAME, table_rows, data_length, index_length,
round(((data_length + index_length) / 1024 / 1024),2) "Size in MB"
FROM information_schema.TABLES WHERE table_schema = "schema_name";
Первый запрос работает правильно, но второй запрос не создает результирующий набор. Он просто показывает имена полей без каких-либо строк. Как я могу изменить второй запрос, чтобы правильно показать размер размеров моих таблиц в моей базе данных.
Замените "schema_name"
именем одной из ваших баз данных.
И использовать одиночные кавычки для строковых литералов, а не двойные кавычки.
Это была полезная тема. Эта небольшая вариация второго рецепта OP возвращает только таблицы (без представлений) и заказывает возвращаемый набор данных по размеру таблицы --- от самого большого до наименьшего:
MySQL
SELECT
TABLE_NAME, table_rows, data_length, index_length,
round(((data_length + index_length) / 1024 / 1024),2) 'Size in MB'
FROM information_schema.TABLES
WHERE table_schema = 'yourSchemaName' and TABLE_TYPE='BASE TABLE'
ORDER BY data_length DESC;
PostGRES: мне нужно было сделать то же самое в PostGRES сегодня и заимствовать некоторую помощь этого ответа (и еще один, который я потерял после закрытия вкладки браузера), это то, что я закончил. Добавьте его здесь, если он будет полезен для кого-либо еще.
SELECT
t.tbl table_name,
ct.reltuples row_count,
pg_total_relation_size(t.tbl) size,
pg_size_pretty(pg_total_relation_size(t.tbl)) pretty_size
FROM (
SELECT
table_name tbl
FROM information_schema.tables
WHERE
table_schema = 'public'
AND table_type = 'BASE TABLE'
) t
join (
SELECT
relname, reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema')
AND relkind='r'
) ct
on t.tbl = ct.relname
order by size desc ;
Думаю, это лучше.. http://dev.mysql.com/doc/refman/5.1/en/show-table-status.html
show table status from database;
Вот запрос, который я использую, чтобы указать размер каждой таблицы в базе данных.
SELECT CASE WHEN (GROUPING(sob.name)=1) THEN 'All_Tables'
ELSE ISNULL(sob.name, 'unknown') END AS Table_name,
SUM(sys.length) AS Byte_Length
FROM sysobjects sob, syscolumns sys
WHERE sob.xtype='u' AND sys.id=sob.id
GROUP BY sob.name
WITH CUBE