PHP / MySQL - 比较来自2个不同数据库的表

时间:2016-09-21 07:24:10

标签: php mysql database performance compare

我有2个框架(Laravel - web,Codeigniter - API)和2个不同的数据库。我已经构建了一个函数(在API上),它检测一个数据库(来自2个表)的变化,并在其他数据库中应用这些变化。

注意:没有办法在同一个数据库上运行Web和API - 这就是为什么我要做这件事。

无论如何,重要的是每一点变化都会得到认可。如果案件是新记录或删除记录 - 它很简单,没有任何问题。但是,如果两个数据库中都存在记录 - 我需要比较它们的值来检测变化,这一部分变得具有挑战性。

我知道如何以最慢和最重的方式做到这一点(选择每条记录并进行比较)。

我的问题是 - 您如何建议让它以智能和快速的方式运作?

非常感谢。

2 个答案:

答案 0 :(得分:1)

只要mysql用户对两个数据库都有选择权限,您就可以在查询中限定数据库,如下所示:

SELECT * FROM `db1`.`table1`;
SELECT * FROM `db2`.`table1`;

连接到PHP时选择了哪个数据库并不重要。将在查询中使用正确的数据库。

当数据库/表名只是字母数字而不是SQL关键字时,滴答是可选的。

答案 1 :(得分:0)

根据“slave”数据库的响应时间,有两个选项不会过多地增加开销:

  1. 如果您可以通过在一个或两个表前添加前缀来在同一个数据库中组合这两个数据库,则可以使用FOREIGN KEYS让数据库为您完成艰难的工作。
  2. 使用TIMESTAMP - 字段,只要行更新,您可以设置该字段由DB更新。
  3. 选项1将是我最好的猜测,但这可能意味着对正在运行的系统进行物理更改,如果FOREIGN KEYS对您来说是新的,您可能需要测试,因为它们可能是真正的PITA(恕我直言)。

    选项2更容易实现,但您仍然需要手动检测已删除/行的更改。