Saya dapat memikirkan empat kemungkinan solusi untuk skenario Anda:
- gunakan nama-tabel yang sepenuhnya memenuhi syarat saat menanyakan eksternal meja. MySQL mendukung
dbname.tablename
-sintaks untuk mengakses tabel di luar cakupan database saat ini. Ini mengharuskan pengguna yang terhubung saat ini memiliki hak yang sesuai untuk membaca dari tabel yang diminta di db fisik lain. - jika database eksternal Anda berjalan pada server MySQL yang berbeda (baik pada mesin yang sama atau melalui koneksi jaringan), Anda dapat menggunakan replikasi untuk terus memperbarui salinan read-only dari tabel jarak jauh. Replikasi hanya dimungkinkan jika Anda menjalankan dua instance MySQL terpisah.
- gunakan
FEDERATED
Mesin penyimpanan MySQL untuk hampir mengimpor tabel ke dalam database Anda saat ini. Ini menghilangkan persyaratan untuk memberikan hak akses pengguna saat ini ke database kedua karena kredensial diberikan denganCREATE TABLE
-pernyataan saat menggunakanFEDERATED
mesin penyimpanan. Ini juga berfungsi dengan database yang berjalan di server fisik yang berbeda atau instance MySQL yang berbeda. Saya pikir ini akan menjadi opsi berkinerja paling buruk dan memiliki beberapa batasan - kurang lebih penting tergantung pada skenario penggunaan dan kebutuhan Anda. - Ini adalah ekstensi untuk metode 1. Daripada harus menentukan nama-tabel yang sepenuhnya memenuhi syarat setiap kali Anda meminta informasi dari eksternal Anda tabel, Anda cukup membuat tampilan
di dalam database Anda saat ini berdasarkan
SELECT <<columns>> FROM <<database>>.<<table>>
. Ini menyerupai cara,FEDERATED
-metode berfungsi, tetapi terbatas pada tabel pada instance MySQL yang sama.
Secara pribadi saya akan menganggap metode (4) sebagai yang paling berguna - tetapi yang lain juga bisa menjadi solusi yang mungkin tergantung pada kebutuhan Anda.