Допустим, у меня есть две отдельные базы данных, X и Y, на одном физическом сервере.
Все мои запросы в настоящее время исчерпаны из X.
Я считаю, что у меня одна таблица в YI хотела бы быть доступной для X для JOINS.
Итак … теперь я сохраняю копию одной таблицы, которая мне нужна для X и Y как для X, так и для Y, но данные в Y постоянно меняются, поэтому копия скоро становится устаревшей. Не важно для этого приложения, но для другого, которое я сейчас проектирую, этого просто не будет.
X прямо сейчас требуется только чтение доступа к таблице в Y.
Существует ли эффективный способ объединения между двумя базами данных?
Я предпочел бы решение mysql, а не открывать несколько соединений с базами данных в php.
Спасибо.
РЕДАКТИРОВАТЬ: Итак, что получится из этих строк ?:
$conn = mysql_connect('localhost','username','password'); @mysql_select_db('database_name',$conn)
И да .. это старое приложение, поэтому mysql вместо mysqli. Предположим, я мог бы преобразовать его.
EDIT2: Поэтому, когда я не указываю database_name.table_name
и просто указываю table_name
я получаю все, что выбрано, и где я указываю database.table_name
Я получаю то, что я просил .. правильно? Ага. Работает.
EDIT3: Есть ли какая-либо значительная производительность, связанная с объединением кросс-баз данных и объединением в одной базе данных? Неа. Выглядит так же быстро.
Спасибо всем за ваши ответы.
РЕДАКТИРОВАТЬ: Итак, что получится из этих строк ?:
$ conn = mysql_connect ('localhost', 'username', 'password'); @mysql_select_db ( 'имя_базы_данных', $ сопп)
Mysql_select_db является необязательным. Поскольку он просто выбирает активный db для использования. http://us3.php.net/manual/en/function.mysql-select-db.php
И да .. это старое приложение, поэтому mysql вместо mysqli. Предположим, я мог бы преобразовать его.
IMHO Я не думаю, что использование MYSQL имеет какое-либо отношение к тому, чтобы быть медленным, из моих собственных исследований в нем, не так много улучшений скорости с MYSQLi и MYSQL. Тесты реального мира не показывают, что это большой драйвер производительности. Я честно придерживался MYSQL для всех моих приложений.
вы должны использовать псевдоним таблицы в другой базе данных:
select a.id , b.foreign_id from database1.table1 a join database2.table1 b on b.foreign_id = a.id
Если две базы данных находятся на одном сервере, вы можете просто квалифицировать таблицу с именем базы данных в запросе соединения.
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