Wie wäre es mit föderierten Tabellen auf einem der Server? Erstellen Sie die föderierten Tabellen basierend auf den fernen Tabellen, die Sie in der Abfrage verwenden, und führen Sie die Abfrage so aus, als ob Ihre Datenbank vollständig lokal wäre. Beispiel unten von MySQL site
Die Prozedur für die Verwendung von FEDERATED-Tabellen ist sehr einfach. Normalerweise werden zwei Server ausgeführt, entweder auf demselben Host oder auf verschiedenen Hosts. (Es ist möglich, dass eine FEDERATED-Tabelle eine andere Tabelle verwendet, die von demselben Server verwaltet wird, auch wenn dies wenig sinnvoll ist.)
Zuerst müssen Sie eine Tabelle auf dem Remote-Server haben, auf den Sie zugreifen möchten durch Verwendung einer FEDERATED-Tabelle.Nehmen wir an, dass der Remote-Tabelle in der föderierten Datenbank und wird wie folgt definiert:
CREATE TABLE test_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=MyISAM
CHARSET=latin1;
Das Beispiel verwendet eine MyISAM-Tabelle, aber die Tabelle jede Speicher-Engine verwenden könnte.
nächste eine föderierte Tabelle auf dem lokalen Server erstellen für die Remote-Tabelle zugreifen:
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';
(Vor MySQL 5.0.13, KOMMENTAR Verwendung statt CONNECTION.)
Wenn Sie überhaupt sind in In der Situation, in der der mysql-Client einen Join durchführt, sind Sie in Schwierigkeiten. Die richtige Lösung besteht darin, dass die Server miteinander kommunizieren und eine einzige Ergebnismenge generieren, die an den Client gesendet wird. MSSQL macht das möglich, indem es Ihnen ermöglicht, Server zu "verlinken" - und so zu konfigurieren, welche Anmeldeinformationen sie für die Verbindung usw. verwenden werden. Auf diese Server wird dann über einen Alias zugegriffen. – Basic
Ich brauchte ein wenig um zu lesen, um zu verstehen, worüber du geredet hast. Eine andere Antwort beschreibt, wie man das in MySQL macht, was wahrscheinlich eine allgemeinere Lösung ist als die, die ich gepostet habe. – staticsan