1. Jenis pertanyaan silang pangkalan data yang pertama ialah pertanyaan bersama antara dua pangkalan data yang berbeza di bawah pelayan mysql yang sama. sama Di bawah pelayan mysql, dua data berbeza boleh ditambah terus ke nama pangkalan data untuk mencapai pertanyaan silang pangkalan data
select * from t_test1 t1, test2.t_test2 t2 where t1.id = t2.id
Lakukan pertanyaan sql untuk mendapatkan keputusan
2. Jenis pertanyaan silang pangkalan data yang kedua ialah pelayan mysql yang dipasang pada dua pelayan berbeza (pelayan fizikal) untuk melaksanakan pertanyaan silang pangkalan data Prinsip pelaksanaan adalah serupa dengan pemetaan maya dan perlu digunakan Untuk Federated, satu lagi enjin storan mysql, enjin storan FEDERATED mengakses data dalam jadual dalam pangkalan data jauh dan bukannya jadual tempatan.
Ciri ini membawa kemudahan kepada beberapa aplikasi pembangunan Anda boleh terus membina jadual bersekutu secara setempat untuk menyambung ke jadual data jauh Selepas konfigurasi, data dalam jadual tempatan boleh disegerakkan terus dengan jadual data jauh. Sebenarnya, enjin ini sebenarnya tidak menyimpan data Data yang diperlukan diperoleh dengan menyambung ke pelayan MySQL yang lain.
MySQL tidak mendayakan enjin storan bersekutu secara lalai dan perlu didayakan dalam fail konfigurasi#在[mysqld] 下 添加 federated 然后重启mysql服务就可以了 [mysqld] federated
#输入命令查看引擎开启状态 show engines;
, telah didayakan
dan kemudian anda boleh mencipta jadual maya pada pangkalan data test1, petakan jadual t_test2 pada perpustakaan test2 ke perpustakaan test1
CREATE TABLE `t_test2` ( `id` int NOT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb3 COMMENT='远程测试表t_test2' CONNECTION='mysql://root:123456@127.0.0.1:3306/test2/t_test2' ; /** CONNECTION='mysql://root:123456$@127.0.0.1:3306/test2/t_test2' 这个配置是关键 root:代表远程数据库的用户 123456:代表远程数据的密码 127.0.0.1:代表远程数据库的ip地址,域名也可以 test2:代表远程数据库的数据库名称 t_test2:代表远程数据库中的哪一张表 **/
dan laksanakan pernyataan SQL
Anda boleh melihat bahawa jadual t_test2 dicipta sebenarnya tidak wujud, ia hanyalah pemetaan jauh
Anda boleh lihat menggunakan enjin PERSEKUTUAN
Selepas jadual dibuat, anda boleh menulis sql
select * from t_test1 t1, t_test2 t2 where t1.id = t2.id
Anda boleh melihat hasil pelaksanaan
Nota mengenai penggunaan federated:
1 Nama jadual yang dibuat secara tempatan mesti wujud pada pelayan jauh dan medan yang dibuat juga mestilah medan dalam jadual jauh, yang boleh dibandingkan dengan Jadual jauh mempunyai lebih sedikit medan, tetapi tidak lebih. Pilih enjin storan setempat
2 tidak mengubah suai struktur jadual jauh 3 Perintah truncate akan Kosongkan data jadual jauh 4 Perintah drop hanya akan memadamkan jadual maya dan bukan jadual jauh 5. Pilih kiraan(*), pilih * daripada had M, N dan penyataan lain dilaksanakan Kecekapan adalah sangat rendah, dan terdapat masalah serius apabila jumlah data adalah besar adalah sangat pantas. Contohnya, pertanyaan berikut adalah sangat perlahan (dengan mengandaikan id ialah indeks utama)select id from db.tablea where id >100 limit 10 ;
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!