Как запросить общую длину байта записи в MySQL таблиц? - PullRequest
0 голосов
/ 02 июня 2019

ПОКАЗАТЬ СОСТОЯНИЕ ТАБЛИЦЫ просто дает мне среднюю длину строки, которая не совпадает.

Я мог бы просто просмотреть определения столбцов и сложить их.Но это много работы, если у меня много столов.Я могу вычислить его с помощью запроса на основе information_schema, но я чувствую, что должен быть более простой способ?

Было бы идеально, если бы он мог дать мне сумму с полями BLOB / TEXT и без них.

Это кажется довольно фундаментальным, и поэтому я предполагаю, что есть встроенное решение.

Кто-нибудь знает?

1 Ответ

0 голосов
/ 02 июня 2019

Это то, что я до сих пор придумал.

SELECT
    TABLE_SCHEMA,
    TABLE_NAME,
    SUM(CHARACTER_OCTET_LENGTH) AS total_table_octets,
    SUM(CHARACTER_MAXIMUM_LENGTH) AS total_table_chars,
    SUM(IF(DATA_TYPE IN('blob', 'text', 'mediumtext', 'longtext', 'mediumblob', 'longblob'), CHARACTER_OCTET_LENGTH, 0)) AS blob_octets,
    SUM(IF(DATA_TYPE IN('blob', 'text', 'mediumtext', 'longtext', 'mediumblob', 'longblob'), 0, CHARACTER_OCTET_LENGTH)) AS octets_without_blobs_text
FROM INFORMATION_SCHEMA.COLUMNS
-- WHERE TABLE_SCHEMA IN ('test')
GROUP BY TABLE_SCHEMA, TABLE_NAME
ORDER BY total_table_octets desc
LIMIT 30;
...