我有一个问题,在过去的几个月里一直困扰着我。我在同一台服务器上有数万个 MySQL 数据库,所有数据库都具有相同的架构。我希望能够查询所有这些并获得结果列表。目前,我正在使用 PHP 脚本循环遍历每个数据库并对每个数据库执行查询。有时这可能需要很长时间(10 分钟以上),因此这显然不是最佳解决方案。
这是我想做的一个例子:
从 db_prefix_*.tablename 中选择某些内容,其中某些内容 = 1;
...并让它返回一组结果,db_prefix_* 是数据库的名称。
这样的事情真的存在还是我在做梦?
这个问题可能会变得更加复杂,因为我将把这些数据库移动到多个服务器,但当我到达那里时我会穿过那条路。
最佳答案
这是您正在寻找的东西吗:
DECLARE @sqlQuery nvarchar(MAX)
SET @sqlQuery=''
select @sqlQuery=@sqlQuery+'select something from '+ SCHEMA_NAME +'.tableName' from INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME LIKE 'db_prefix_%'
print @sqlQuery
EXEC sp_executeSQL @sqlQuery
我有 SQL Server 背景,我已经尽力翻译 MySQL,如果这里有不正确的地方,请纠正我。
关于mysql - 使用相同模式查询数千个 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7925884/