计算来自具有相同架构的不同数据库的查询

时间:2019-09-09 09:38:27

标签: mysql sql

是否有任何简单的方法可以从具有相同架构的不同table(数据库名称)中获取单个databases的计数数据。

我试图这样。

SELECT COUNT(id) AS db1users,
(SELECT COUNT(id) FROM DB2.users) AS db2users,(
SELECT COUNT(id) FROM DB3.users) AS db3users,
(SELECT COUNT(id) FROM DB4.users) AS db4users,
..........
..........
.......... 
FROM DB1.users;

我得到了确切的结果,但是query变得很大。有什么简单的方法可以做到这一点。

请帮助

2 个答案:

答案 0 :(得分:2)

另一种避免使用动态sql的方法(并且价格便宜得多,因此可扩展性更高)将使用MySQL the INFORMATION_SCHEMA.TABLES table。它有一个名为TABLE_ROWS的列,其规范如下:

  

TABLE_ROWS

     

行数。某些存储引擎(例如MyISAM)存储准确的计数。对于其他存储引擎,例如InnoDB,此值是一个近似值,可能与实际值相差40%至50%。在这种情况下,请使用SELECT COUNT(*)获得准确的计数。

如果这符合您的要求,则可以使用一个简单的查询语句:

SELECT table_schema, table_rows FROM information_schema.tables WHERE table_name = 'users'

答案 1 :(得分:1)

最好的方法是通过脚本语言(例如Python,Ruby,PHP);您将执行数据库查询以从数据库中获取所有数据库名称,然后使用所有select count(id) from...创建一个SQL语句;一旦构建了SQL语句,就可以执行它。

您也可以在dynamic SQL inside MySQL中执行此操作;动态SQL很难编写和调试,所以我不是一个超级粉丝。...