1

我有两个不同的数据库表,它们必须(内部)相互连接。一张来自 MSSQL 数据库,一张来自 MySQL 数据库。我几乎可以肯定不可能在数据库级别加入这些表,所以我必须在 PHP(我正在使用的脚本语言)中执行此操作。

只是为了说明一些事情,这是关于获取订单信息。我的 MSSQL 数据库有 、 、 等列order_idorder_descriptiondelivery_date的 MySQL 数据库具有相同的订单 ID 和状态(例如“已启动”、“已暂停”、“准备好”、“已交付”)。我想要的是在一张表中加入所有信息。

我正在考虑从 MSSQL 数据库中获取所有信息,然后从 MySQL 数据库中为每个组选择状态,但这是一个巨大的性能问题:如果我有 1000 行,我将不得不执行 1000 次 SELECT。

真正完美的是在两个数据库上执行简单的 SELECT 操作,将结果放入两个不同的数组中并合并数组。我知道有一个名为 的 PHP 函数array_merge_recursive(),但这只是将两个数组粘在一起,而不是将它们连接到主键 ( order_id) 上。

在一个概览中获取两个数据库表的最佳方法是什么?

4

2 回答 2

1

我会考虑从 SQL Server 创建到 MySQL 服务器的链接服务器。然后,您可以编写两个表之间的连接,就好像它们在同一台服务器上一样。如果创建视图,则可以从应用程序中选择视图。我认为这会比在您的应用程序中“加入”更快。它当然应该更容易编码。

要对视图进行编码,您将使用由四部分组成的命名约定来引用 MySQL 服务器:

例子:

select *
from mysqlsrv.mydb1..mytbl join
mssql.mydb2.dbo.myOtherTbl
于 2013-04-04T13:07:36.940 回答
1

如果你想使用两个数组中的键,它们相等,并且只替换值,你只需要array_merge()

如果输入数组具有相同的字符串键,则该键的后一个值将覆盖前一个。但是,如果数组包含数字键,则后面的值不会覆盖原始值,而是会被追加。

带有数字键的输入数组中的值将使用从结果数组中的零开始的递增键重新编号。

但是,从两个数据库中获取信息并将其写入数组仍然与使用 SELECT 获取信息并将获取的行用作另一个 SELECT 中的匹配项相同。

于 2013-04-04T13:08:42.430 回答