mysql数据库查询单表行长度
SELECT t.TABLE_NAME, -- t.table_type, SUM( CASE WHEN c.DATA_TYPE = 'tinyint' THEN 1 WHEN c.DATA_TYPE = 'smallint' THEN 2 WHEN c.DATA_TYPE = 'mediumint' THEN 3 WHEN c.DATA_TYPE = 'int' THEN 4 WHEN c.DATA_TYPE = 'bigint' THEN 8 WHEN c.DATA_TYPE = 'float' THEN 4 WHEN c.DATA_TYPE = 'double' THEN 8 WHEN c.DATA_TYPE = 'decimal' THEN c.NUMERIC_PRECISION + c.NUMERIC_SCALE WHEN c.DATA_TYPE IN ('char', 'varchar', 'binary', 'varbinary') THEN c.CHARACTER_MAXIMUM_LENGTH * 4 -- utf8mb4编码每个字符最多4字节 + IF(c.CHARACTER_MAXIMUM_LENGTH <= 255, 1, 2) -- var_length_column_extra_bytes WHEN c.DATA_TYPE IN ('date', 'time') THEN 3 WHEN c.DATA_TYPE IN ('datetime', 'timestamp') THEN 5 + IFNULL(c.DATETIME_PRECISION, 0) WHEN c.DATA_TYPE = 'year' THEN 1 ELSE 0 END ) AS Estimated_Max_Row_Size FROM information_schema.TABLES t JOIN information_schema.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME AND t.TABLE_SCHEMA = c.TABLE_SCHEMA WHERE t.TABLE_SCHEMA = 'your_table_schema_name' AND t.table_type = 'BASE TABLE' GROUP BY t.TABLE_NAME ORDER BY Estimated_Max_Row_Size DESC