Dengan pembangunan Internet dan pengembangan berterusan medan aplikasi, peningkatan dalam volum data telah menjadi kebiasaan, dan pertanyaan data yang cekap amat penting. Apabila menggunakan pangkalan data MySQL, pertanyaan berbilang jadual ialah kaedah pertanyaan data yang sangat biasa. Oleh itu, cara melaksanakan pertanyaan data berbilang jadual yang cekap telah menjadi kemahiran yang mesti dikuasai oleh pengguna pangkalan data MySQL.
Artikel ini akan memperkenalkan cara melaksanakan pertanyaan data berbilang jadual yang cekap dari aspek berikut: 1. Konsep asas dan sintaks pertanyaan berbilang jadual 2. Kemahiran pengoptimuman pertanyaan berbilang jadual; Masalah dan Penyelesaian pertanyaan berbilang jadual.
1. Konsep asas dan sintaks pertanyaan berbilang jadual
Dalam pertanyaan MySQL, pertanyaan berbilang jadual merujuk kepada memadankan medan berkaitannya dengan menggabungkan dua atau lebih jadual. Pertanyaan berbilang jadual boleh dibahagikan kepada jenis yang berbeza seperti pertanyaan sambung dalam, pertanyaan sambung luar, pertanyaan sambung sendiri, sarikata dan pertanyaan kesatuan. Di sini, kami memperkenalkan dua kaedah terutamanya: pertanyaan sambung dalam dan pertanyaan sambung luar.
1. Pertanyaan gabungan dalaman
Pertanyaan gabungan dalaman menggabungkan rekod yang memenuhi syarat dalam dua jadual dan mengembalikan set hasil yang sepadan. Pertanyaan gabungan dalaman menggunakan kata kunci JOIN, yang boleh dibahagikan kepada dua sintaks berikut:
(1) Sintaks menggunakan kata kunci INNER JOIN
PILIH *
DARI Jadual 1
INNER JOIN Jadual 2
PADA Jadual 1. Nama lajur = Jadual 2. Nama lajur
Dalam sintaks di atas, INNER JOIN ialah kata kunci pertanyaan gabungan dalaman, * menunjukkan semua medan pertanyaan, DARI diikuti oleh Jadual 1 dan Jadual 2, selepas ON, menentukan syarat untuk menyambung dua jadual.
(2) Sintaks menggunakan kata kunci WHERE
PILIH *
DARI Jadual 1, Jadual 2
WHERE Jadual 1. Nama lajur = Jadual 2. Nama lajur
Dalam sintaks di atas, WHERE adalah keadaan sambungan, yang juga menentukan syarat untuk menyambung dua jadual.
2. Pertanyaan gabungan luar
Pertanyaan gabungan luar merujuk kepada mengembalikan semua rekod dalam jadual kiri dan rekod sepadan dalam jadual kanan berdasarkan syarat. Terdapat tiga jenis cantuman luar: cantuman luar kiri, cantuman luar kanan dan cantuman luar penuh. Di bawah ini kami memperkenalkan sambung luar kiri dan sambung luar kanan.
(1) Pertanyaan join luar kiri
Pertanyaan join luar kiri mengembalikan semua rekod dalam jadual kiri dan rekod yang memenuhi syarat dalam jadual kanan Jika tiada rekod yang memenuhi syarat, ia diisi dengan null. Pertanyaan gabungan luar kiri menggunakan kata kunci LEFT JOIN, dan sintaksnya adalah seperti berikut:
PILIH *
DARI Jadual 1
LEFT JOIN Jadual 2
PADA Jadual 1. Nama lajur = Jadual 2. Nama lajur
Dalam sintaks di atas, LEFT JOIN ialah kata kunci sambungan luar kiri, * menunjukkan semua medan pertanyaan, FROM diikuti oleh jadual 1 dan jadual 2, dan ON menentukan syarat untuk menyambung kedua-dua meja itu.
(2) Pertanyaan sambung luar kanan
Pertanyaan sambung luar sebelah kanan mengembalikan semua rekod dalam jadual kanan dan rekod yang memenuhi syarat dalam jadual kiri Jika tiada rekod itu memenuhi syarat, ia diisi dengan null. Pertanyaan gabungan luar kanan menggunakan kata kunci RIGHT JOIN, dan sintaksnya adalah seperti berikut:
PILIH *
DARI Jadual 1
RIGHT JOIN Jadual 2
PADA Jadual 1. Nama lajur = Jadual 2. Nama lajur
Dalam sintaks di atas, RIGHT JOIN ialah kata kunci gabungan luar kanan, * menunjukkan semua medan pertanyaan, FROM diikuti oleh jadual 1 dan jadual 2, dan ON menentukan syarat untuk menyambung kedua-dua meja itu.
2. Kemahiran pengoptimuman untuk pertanyaan berbilang jadual
Apabila melakukan pertanyaan berbilang jadual, jika terdapat banyak jadual dalam pertanyaan, kecekapan pertanyaan akan dikurangkan. Oleh itu, untuk meningkatkan kecekapan pertanyaan berbilang jadual, kami perlu menggunakan beberapa teknik pengoptimuman.
1. Penciptaan indeks
Penciptaan indeks ialah kunci untuk meningkatkan kecekapan pertanyaan berbilang jadual. Indeks boleh meningkatkan kelajuan pertanyaan, terutamanya dalam pertanyaan kompleks Jika tiada indeks, pernyataan pertanyaan perlu mengimbas keseluruhan jadual Selepas indeks dibuat, hanya baris data yang ditunjukkan oleh indeks yang perlu diimbas.
Dalam pertanyaan berbilang jadual, indeks harus dibuat pada semua kunci asing untuk meningkatkan kecekapan pertanyaan bersama. Dalam MySQL, anda boleh mencipta indeks menggunakan arahan CREATE INDEX.
2. Pilih JOIN kata kunci dengan sewajarnya
Apabila melakukan pertanyaan penyertaan dalaman, pilihan kata kunci JOIN akan mempengaruhi kecekapan pertanyaan. Jika set hasil pertanyaan adalah kecil, menggunakan gelung bersarang boleh mendapatkan hasil yang lebih baik, tetapi jika set hasil pertanyaan lebih besar, ia akan menjadi lebih cekap untuk menggunakan HASH JOIN atau SORT-MERGE JOIN.
Apabila melakukan pertanyaan gabungan luar, anda harus memilih LEFT JOIN atau RIGHT JOIN mengikut situasi sebenar, bukannya mensimulasikan operasi INNER JOIN campur UNION atau UNION ALL, yang akan mengurangkan kecekapan pertanyaan.
3 Pilih volum data yang sesuai
Apabila melakukan pertanyaan berbilang jadual, volum data pertanyaan yang sesuai hendaklah dipilih berdasarkan situasi sebenar. Terdapat banyak jadual dalam pertanyaan, dan apabila jumlah data adalah besar, kecekapan pertanyaan akan berkurangan. Oleh itu, pernyataan pertanyaan boleh dioptimumkan semasa membuat pertanyaan, mengurangkan jumlah data pertanyaan dan meningkatkan kecekapan pertanyaan.
3. Masalah dan penyelesaian biasa untuk pertanyaan berbilang jadual
Apabila melakukan pertanyaan berbilang jadual, anda mungkin menghadapi masalah berikut di bawah kami mencadangkan penyelesaian untuk masalah ini.
1. Set hasil pertanyaan terlalu besar
Dalam pertanyaan berbilang jadual, set hasil pertanyaan terlalu besar adalah masalah biasa. Set hasil pertanyaan harus diminimumkan untuk memastikan kelajuan pertanyaan. Kaedahnya adalah seperti berikut:
(1) Kecilkan keputusan yang ditetapkan dengan menambah sekatan dan syarat penapisan.
(2) Gunakan teknologi paging untuk mengurangkan saiz set hasil pertanyaan melalui pertanyaan kelompok.
(3) Optimumkan pernyataan pertanyaan, kurangkan bilangan jadual yang digabungkan, kurangkan medan pertanyaan yang tidak perlu, dsb.
2. Kecekapan pertanyaan yang rendah
Kecekapan pertanyaan yang rendah ialah salah satu masalah biasa dalam pertanyaan berbilang jadual. Berikut ialah beberapa penyelesaian biasa:
(1) Cipta indeks untuk meningkatkan kelajuan pertanyaan.
(2) Gunakan kata kunci khusus dalam pernyataan JOIN untuk mengoptimumkan kecekapan pertanyaan.
(3) Optimumkan pernyataan pertanyaan, kurangkan bilangan jadual yang digabungkan, kurangkan medan pertanyaan yang tidak perlu, dsb.
(4) Pilih enjin storan yang sesuai mengikut situasi sebenar, seperti MyISAM dan InnoDB, dsb.
3. Lebihan data
Semasa pertanyaan berbilang jadual, lebihan data mungkin berlaku disebabkan kehadiran sejumlah besar data pendua dalam jadual. Berikut ialah beberapa penyelesaian biasa:
(1) Elakkan lebihan data dengan menggunakan kekangan kunci asing.
(2) Gunakan paparan atau prosedur tersimpan untuk mengurangkan akses data berlebihan.
(3) Seragamkan reka bentuk pangkalan data sebanyak mungkin untuk mengelakkan kewujudan data berlebihan.
Ringkasan
Pertanyaan berbilang jadual ialah kaedah pertanyaan data yang paling biasa dalam pangkalan data MySQL. Melalui pengenalan artikel ini, kami telah mempelajari tentang konsep asas dan sintaks pertanyaan berbilang jadual, serta teknik pengoptimuman dan masalah dan penyelesaian biasa untuk pertanyaan berbilang jadual. Hanya dengan menguasai kemahiran dan kaedah ini anda boleh menggunakan pangkalan data MySQL dengan lebih cekap untuk pertanyaan data berbilang jadual dan menyediakan sokongan yang lebih baik untuk aplikasi data Internet.
Atas ialah kandungan terperinci Pertanyaan berbilang jadual MySql: Cara melaksanakan pertanyaan data berbilang jadual yang cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!