mysql - mysql中选定表的分组大小

标签 mysql information-schema

我正在尝试获取符合我的条件的所有表的总大小(拉丁列,其中表排序规则不是拉丁文,带有文本或 varchar 列),但是我得到的大小与实际大小相差甚远尺寸。

mysql> select t.table_schema,sum(data_length + index_length)/1024/1024/1024 
    from tables t 
    inner join columns c on t.table_schema=c.table_schema and t.table_name=c.table_name 
    where t.table_schema in ('db1','db2') 
        and  (c.collation_name like '%latin%' or c.character_set_name like '%latin%') 
        and  (c.column_type like 'varchar%' or c.column_type like 'text') 
        and  t.table_collation not like '%latin%' 
    group by t.table_schema;
+--------------+------------------------------------------------+
| table_schema | sum(data_length + index_length)/1024/1024/1024 |
+--------------+------------------------------------------------+
| db1       |                                  233.021102905273 |
| db2        |                                  93.742004394531 |
+--------------+------------------------------------------------+
2 rows in set (0.54 sec)

最佳答案

您需要连接一个子查询,该子查询仅返回每个表中与列约束匹配的一行。

select t.table_schema,sum(data_length + index_length)/1024/1024/1024 
from tables t 
inner join (
    SELECT DISTINCT table_schema, table_name
    FROM columns  
    WHERE (collation_name like '%latin%' or character_set_name like '%latin%') 
    and (column_type like 'varchar%' or column_type like 'text') 
) c on t.table_schema=c.table_schema and t.table_name=c.table_name
where t.table_schema in ('db1','db2') 
    and  t.table_collation not like '%latin%' 
group by t.table_schema;

关于mysql - mysql中选定表的分组大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39669918/

相关文章:

mysql - "Combine"完全外连接而不是内连接?

postgresql - 返回的数据类型 information_schema.identifier 与预期类型不匹配

mysql - 删除今天创建的表

sql - 具有 NULL 值的 NOT LIKE 行为

mysql - 尝试将列连接到 key_column_usage

java - Hibernate 查询和列表对象

php - 在mysql where条件下只获取四位数字

python - 使用 python 创建 Mysql 数据库 - 不断收到 1064 错误(...在 '%s' 附近使用正确的语法)

mysql - 合并计数结果加入laravel

php - 获取没有信息模式的 FTS 索引名称