-1

您如何将 3 个 MySQL 数据库合并为 1 个数据库?

在同一台服务器上,我有三 (3) 个单独的网站,每个网站都有自己的 MySQL 数据库:

站点 1 --> 数据库 1,1 个表,16 个字段

站点 2 --> 数据库 2,1 个表,16 个字段

站点 3 --> 数据库 3,1 个表,16 个字段

所有三个数据库都具有相同的结构,因为每个数据库只有 1 个包含 16 个字段的表。在所有 3 个数据库中,表名相同 (Post_Data),所有 16 个字段都相同。索引字段(字段 11)被命名为 Post_Date。

每个表包含超过 1,000,000 个条目。

我正在创建带有 MySQL 数据库(database4、1 个表、16 个字段)的第 4 个网站,用作搜索站点,以执行显示来自其他 3 个数据库站点的结果的搜索查询。在第 4 个网站中,我目前正在运行一个脚本,该脚本分别查询所有 3 个数据库并组合结果。然后,我从结果中删除重复项。

我认为这是对所有 3 个数据库执行搜索查询的低效方式。我更喜欢只查询一个数据库,其中包含来自其他 3 个数据库的所有信息减去重复项。

我的问题是:

如何将 database1、database2 和 database3 中的所有三个数据库表合并到 database4 中的单个表中?此外,database4 需要每小时更新一次 database1、database2 和 database3 中的数据。我可以使用 cron 来执行更新。

我本质上是在寻找 PHP / MySQL 代码来执行此任务。

请记住,所有三个数据库中都会有重复的条目。换句话说,database1、database2 和 database3 可能都包含一些相同的条目,因此一旦将所有 3 个数据库表合并到 database4 中的单个表中,我就需要删除重复的条目。

由于这第 4 个网站本质上是可供任何网站访问者使用的搜索类型网站,因此我需要它具有快速的搜索响应,从而最大限度地减少服务器上的负载。我当前的搜索方法(同时查询所有 3 个数据库并组合结果)会影响每个搜索查询在所有 3 个网站上的服务器负载。

关注点:

  1. Database4 不能包含来自 database1、database2 和 database3 的重复项。

  2. 我需要搜索站点具有快速的搜索响应,从而最大限度地减少服务器上的负载。

  3. Database4 需要使用来自 database1、database2 和 database3 的数据每小时更新一次。我可以使用 cron 来执行更新。

我以前从未创建过搜索类型数据库。因此,我是否还需要在 database4 中加入一个额外的搜索索引字段?

4

1 回答 1

0

每小时一次;

> USE database4

> CREATE TABLE temp AS 
     SELECT * FROM database1.Post_Data
     UNION
     SELECT * FROM database2.Post_Data
     UNION
     SELECT * FROM database3.Post_Data

> CREATE INDEX ix_post_date ON temp(Post_Date);

> RENAME TABLE Post_Data TO backup, temp TO Post_Data

当然,如果您的表很大,您可能希望找到一种方法来为更改添加时间戳,以便您可以增量更新。

于 2013-06-02T21:45:34.573 回答