mysql - 遅い - sql 複数テーブル 結合




2つの異なるサーバーからテーブルを結合する (2)

私は2つの異なるサーバーserver1server2を持っていserver2 、今はserver1 db1server1db2がありserver2 。 私はこのようにMySQLでこれら2つのテーブルに参加しようとしています。

Select a.field1,b.field2  
FROM  [server1, 3306].[db1].table1 a  
Inner Join [server2, 3312].[db2].table2 b  
ON a.field1=b.field2  

しかし、私はエラーが発生しています。 MYSQLで可能です。


はい、MySQLで可能です。

以前も同様の質問がありました。 これを行うには、 dev.mysql.com/doc/refman/5.1/en/federated-storage-engine.htmlを使用する必要があります。 考え方は次のようになります:

必要な方法を使用するには、別の遠隔地にある表に基づいてフェデレーテッド表を作成する必要があります。 テーブルの構造はまったく同じでなければなりません。

CREATE TABLE federated_table (
    id     INT(20) NOT NULL AUTO_INCREMENT,
    name   VARCHAR(32) NOT NULL DEFAULT '',
    other  INT(20) NOT NULL DEFAULT '0',
    PRIMARY KEY  (id),
    INDEX name (name),
    INDEX other_key (other)
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://[email protected]_host:9306/federated/test_table';

[ソースの回答]


レプリケーションは、代替と適切なソリューションになります。

server1 - db1 - > server2に複製します。 (現在はdb1とdb2は同じサーバーserver2にありますが、簡単に参加できます)。

注記:server2がstore / processなどの点でdb1の負荷を十分に取ることができる場合、wenは複製を実行できます。 @brilliandがそう言ったように、Federatedは多くの手動作業を行い、処理が遅くなります。





mysql