SQL查询以获取大于值的数据库

时间:2014-03-14 17:46:08

标签: mysql sql database

我试图让所有MySQL数据库大于1.5GB,我无法提出一个查询,将ROUND((SUM(data_length + index_length) / 1024 / 1024),2)返回的值与1.50进行比较。

任何建议或意见将不胜感激。

感谢。

3 个答案:

答案 0 :(得分:1)

您正在使用的查询将为您提供MB的数量,而不是GB。因此,您可以将目标从GB转换为MB 修改您的查询,以便为您提供GB而不是MB。

无论哪种方式,假设您已经在做类似以下的事情......

SELECT TABLE_SCHEMA, SUM(DATA_LENGTH + INDEX_LENGTH)/1024/1024 AS db_size_mb
FROM TABLES
GROUP BY TABLE_SCHEMA

您只需在最后添加HAVING db_size_mb > xxxx即可。 xxxx的值显然取决于您是否将查询保留为返回MB。

答案 1 :(得分:1)

这也可行

SELECT table_schema AS databaseName, 
   sum(data_length + index_length)/1024/1024/1024 AS sizeInGB
FROM information_schema.TABLES 
GROUP BY table_schema
HAVING sizeInGB >= 1.5;

答案 2 :(得分:0)

这应该有效。请注意,我使用的是bithift运算符,但只移位29位然后再跳2,这样精度就会丢失:

SELECT 
    TABLE_SCHEMA AS db_name, 
    SUM((data_length + index_length) >> 29)/2 AS db_size_gb 
FROM TABLES
GROUP BY (TABLE_SCHEMA)
HAVING db_size_gb >= 1.5