是否有任何简单的方法可以从具有相同架构的不同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
变得很大。有什么简单的方法可以做到这一点。
请帮助
答案 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很难编写和调试,所以我不是一个超级粉丝。...