Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

PHPz
PHPzke hadapan
2023-05-27 14:03:282841semak imbas

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

Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

Lakukan pertanyaan sql untuk mendapatkan keputusan

Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

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. Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

MySQL tidak mendayakan enjin storan bersekutu secara lalai dan perlu didayakan dalam fail konfigurasi

#在[mysqld] 下 添加 federated 然后重启mysql服务就可以了
[mysqld]
federated

boleh dilihat seperti yang ditunjukkan di bawah:

#输入命令查看引擎开启状态
show engines;

, telah didayakan

Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

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 Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

Anda boleh melihat bahawa jadual t_test2 dicipta sebenarnya tidak wujud, ia hanyalah pemetaan jauh

Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

Anda boleh lihat menggunakan enjin PERSEKUTUAN

Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

Selepas jadual dibuat, anda boleh menulis sql

select * from t_test1 t1, t_test2 t2 where t1.id = t2.id

Anda boleh melihat hasil pelaksanaanBagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

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 Bagaimana untuk menyelesaikan masalah pertanyaan silang pangkalan data mysql

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam