PHP Mysql объединяет разные базы данных


Допустим, у меня есть две отдельные базы данных, X и Y, на одном физическом сервере.

Все мои запросы в настоящее время заканчиваются X.

Я обнаружил, что у меня есть одна таблица в Y, и я хотел бы быть доступным для X для СОЕДИНЕНИЙ.

Итак... теперь я храню копию одной таблицы, которая мне нужна как для X, так и для Y, как в X, так и в Y, но данные в Y постоянно меняются, поэтому копия скоро устареет. Не критично для этого приложения, но для другого, которое я сейчас разрабатываю, это просто не будет делай.

X сейчас нужен только доступ для чтения к таблице в Y.

Существует ли эффективный способ объединения двух баз данных?

Я бы предпочел решение mysql, а не открытие нескольких подключений к базе данных в php.

Спасибо.

РЕДАКТИРОВАТЬ: Так что же происходит с этими строками?:

$conn = mysql_connect('localhost','username','password');
@mysql_select_db('database_name',$conn)

И да.. это старое приложение, следовательно, mysql вместо mysqli. Предположим, я мог бы преобразовать его.

ПРАВКА2: Итак, где я не указываю database_name.table_name, а просто указываю table_name Я получаю все, что выбрано, и где я указываю database.table_name Я получаю то, что просил.. верно? Ага. Работает.

ПРАВКА3: Есть ли какое-либо существенное снижение производительности при выполнении соединений между базами данных по сравнению с объединениями в одной базе данных? Нет. Выглядит так же быстро.

Спасибо всем вам за ваши ответы.

Author: Daren Schwenke, 2009-11-04

4 answers

РЕДАКТИРОВАТЬ: Так что же происходит с этими строками?:

$конн= mysql_connect ("локальный хост", "имя пользователя", "пароль"); @mysql_select_db('имя_базы_данных',$conn)

Mysql_select_db является необязательным. Поскольку он просто выбирает активную базу данных для использования. http://us3.php.net/manual/en/function.mysql-select-db.php

И да.. это старое приложение, следовательно mysql вместо mysqli. Предположим, я мог бы преобразовать его.

ИМХО, я не подумайте, что использование MYSQL имеет какое-либо отношение к медленности, из моих собственных исследований в этой области, с MYSQLi по сравнению с MYSQL не наблюдается значительного улучшения скорости. Тесты в реальном мире не показывают, что это является большим драйвером производительности. Я честно придерживался MYSQL для всех своих приложений.

 2
Author: Jakub, 2009-11-04 17:28:32

Вы должны указать псевдоним таблицы в другой базе данных:

select a.id
     , b.foreign_id
  from database1.table1 a
  join database2.table1 b
    on b.foreign_id = a.id
 13
Author: longneck, 2009-11-04 17:35:04

Если 2 базы данных находятся на одном сервере, вы можете просто указать таблицу с именем базы данных в запросе соединения.

select * from database1.table1 as t1
 inner join database2.table2 as t2
 on t2.fk_id = t1.pk_id
 4
Author: Asaph, 2009-11-04 17:22:20

Просто используйте SQL

SELECT col1, col2 FROM foo f LEFT JOIN db2.bar b ON b.col1 = f.col1
 1
Author: Jake McGraw, 2009-11-04 17:22:58