Farklı giriş ile veritabanları arasında ilgili verileri almak üzerine Öneriler?

2 Cevap php

Ben Veritabanı A, Tablo A (AA) bir sorguda kullanıcı kimlikleri bir dizi var.

Ben Veritabanı B ana kullanıcı veritabanını, Tablo A (BA) var.

Her kullanıcı kimliği AA benim sonuç dizide geri döndü, ben ba o kullanıcı id adı ve soyadı almak istiyorum.

Farklı kullanıcı hesapları her veritabanı kontrol. Ne yazık ki her giriş, her veritabanı için gerekli izinlere sahip olamaz.

Soru: Nasıl ilkleri almak ve sorguları ve / veya işlem zaman az miktarda sürer mi? Dizideki 20 kullanıcı ile? Dizideki 20000 kullanıcı ile? Büyüklük herhangi bir sipariş daha yüksek, eğer varsa?

PHP 5 / MySQL 5 kullanıyorum.

2 Cevap

Sürece veritabanları aynı sunucu üzerinde olduğu gibi sadece bir çapraz veritabanı birleştirme kullanın. Verilere erişmek için kullanılan DB giriş de iki veritabanlarının izinleri gerekir. Gibi bir şey:

SELECT AA.userID, BA.first, BA.last
FROM databasename.schema.table AA
INNER JOIN databasename.schema.table BA ON AA.userID = BA.userID

In response to comments:

Ben doğru birden fazla giriş ile ilgili bölümü okumak inanıyorum, özür yok. Sen tek bir bağlantı üzerinde iki farklı mySQL girişlerini kullanamazlar. Birden sorguları yapmak gerekirse gerçekten sadece üç seçeneğiniz var. A) ilk sonuç kümesi aracılığıyla döngü ve birden fazla sorgular çalıştırmak. B) firstResultSet @ userID IN (bir WHERE yan tümcesi kullanan bir sorgu çalıştırın) ve ilk sonuç sette geçiyor. C) ikinci DB dışında her şeyi seçin ve kod onlara katılın.

Bu seçeneklerin hepsi üç çok iyi değil, bu yüzden ben neden iki veritabanları birinde kullanıcı izinlerini değiştiremezsiniz, sormak istiyorsunuz? Ben de neden 20.000 kullanıcı adlarını ve kimliklerini seçmek gerekir, sormak istiyorsunuz? Bu veri dökümü bir tür olmadığı sürece, ben kullanımı daha kolay ve sorgu yoğun az ikisi olurdu verileri görüntülemek için farklı bir yol arıyor olacaktır.

Hangi seçeneği seçerseniz seçin, yaptığı açıklamada, tüm farklı durumlarda çeşitli dayalı olacaktır. Kayıtların düşük bir sayı ile, 1000 altında, ben kayıtları yüksek bir numara ile B seçeneğini kullanmak, muhtemelen seçenekleri C kullanın ve (örneğin Array_combine kullanma gibi) katılmış olabilir içine bir şey iki sonuç kümeleri yerleştirmek için çalışacağını söyledi.

Ben burada önemli iki veritabanı aramaları mümkün olması gerektiğini düşünüyorum.

Veritabanı A id almak için ilk ve veritabanı B. onları geçmek için ikinci bir

Ben mysql bilmiyorum, ama SQLSunucusu ben xml veri türü kullanmak istiyorum ve bu kullanarak bir deyimi içine kimlikleri tüm geçmek. Xml veri türü önce bir IN açıklamada kimliği ile 'bazı dinamik SQL inşa ederdim.

DatabaseA.TableA DAN UserId SEÇİN

Id yıllardan döngü ve bir virgülle ayrılmış dize oluşturmak.

"(+ StringID +") "UserId IN DataBaseB.TableA DAN Ad, Soyad SEÇ"

Bu sorun 20.000 id yıllardan wth Gönderdiğiniz veri miktarı ile bazı performans sorunları olabilir olmasıdır. Bu yüzden belki mysql kimlikleri listeleri geçirilmesi için ne alternatifler bakmak, XML veri türü kullanmak istiyorum nerden olduğunu.