PHP Mysql veritabanları arasında katıldı

4 Cevap php

Ben aynı fiziksel sunucu üzerinde, iki ayrı veritabanları, X ve Y var diyelim.

Benim sorguları Bütün anda X. tükendi

Ben YI bir tablo KATILDI için X için kullanılabilir olmak istiyorum var bulabilirsiniz.

Yani ... şimdi ben X ve Y hem de X ve Y her ikisi için gereken tek tablonun bir kopyasını tutmak, ancak Y veriler sürekli değişiyor, bu yüzden kopya yakında güncel olur. Bu uygulama için kritik, ama başka ben bu sadece yapmayacağım şimdi tasarlama değil.

X şu anda sadece ihtiyaçları Y. tablo okuma erişimi

Iki veritabanları arasında katılır yapmak için etkili bir yolu var mı?

Php birden fazla veritabanı bağlantıları açılış aksine ben bir mysql çözümü tercih ederim.

Teşekkür ederim.

EDIT: Bu hatların olur Peki ne oldu?:

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

Ve evet .. Bu nedenle mysql yerine mysqli, eski bir uygulama. Ben dönüştürmek olabilir varsayalım.

EDIT2: Peki ben database_name.table_name belirtmek ve sadece ben seçilmiş olursa olsun olsun, ve ben database.table_name Ben ne istedi olsun belirtmek yerlerde table_name belirtmek yok .. değil mi? Yep. Çalışır.

EDIT3: aynı veritabanı içinde katılır karşı çapraz veritabanı yaparak çarptı, önemli bir performans var mı katıldı? Hayır. Sadece hızlı görünüyor.

Yanıtları için teşekkür ederiz.

4 Cevap

EDIT: Yani bu satırların olur musun?:

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

The mysql_select_db is optional. As it just selects the active db to use. http://us3.php.net/manual/en/function.mysql-select-db.php

And yes.. this is an old app, hence the mysql instead of mysqli. Suppose I could convert it.

Ben MYSQL kullanarak içine benim kendi araştırma, yavaş olmak ile ilgisi olduğunu sanmıyorum IMHO, MySQL vs mysqli ile çok hızlı bir gelişme yoktur. Gerçek dünya testleri büyük bir performans sürücü olmak olduğunu göstermez. Ben dürüst tüm uygulamalar için MySQL ile sıkışmış ettik.

Eğer diğer veritabanında tablo diğer adı var:

select a.id
     , b.foreign_id
  from database1.table1 a
  join database2.table1 b
    on b.foreign_id = a.id

2 veritabanları aynı sunucu üzerinde ise, sadece katılmak sorgudaki veritabanı adı ile tabloyu hak kazanabilirler.

select * from database1.table1 as t1
 inner join database2.table2 as t2
 on t2.fk_id = t1.pk_id

Sadece SQL kullanın

SELECT col1, col2 FROM foo f LEFT JOIN db2.bar b ON b.col1 = f.col1