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: Есть ли какое-либо существенное снижение производительности при выполнении соединений между базами данных по сравнению с объединениями в одной базе данных? Нет. Выглядит так же быстро.
Спасибо всем вам за ваши ответы.
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 для всех своих приложений.
Вы должны указать псевдоним таблицы в другой базе данных:
select a.id
, b.foreign_id
from database1.table1 a
join database2.table1 b
on b.foreign_id = a.id
Если 2 базы данных находятся на одном сервере, вы можете просто указать таблицу с именем базы данных в запросе соединения.
select * from database1.table1 as t1
inner join database2.table2 as t2
on t2.fk_id = t1.pk_id
Просто используйте SQL
SELECT col1, col2 FROM foo f LEFT JOIN db2.bar b ON b.col1 = f.col1