Rumah  >  Artikel  >  pangkalan data  >  Ringkasan prinsip MySQL: sambung kiri, sambung kanan, sambung dalam dan sambung Hash

Ringkasan prinsip MySQL: sambung kiri, sambung kanan, sambung dalam dan sambung Hash

WBOY
WBOYke hadapan
2022-11-10 16:30:392312semak imbas

Artikel ini membawa anda pengetahuan yang berkaitan tentang mysql terutamanya prinsip kerja sambung kiri, sambung kanan, sambung dalam dan sambung cincang, dan menganalisis perbezaan antara subkueri dan sambung kemahiran yang perlu dikuasai di tempat kerja berdasarkan apa yang telah mereka pelajari Mari kita lihat bersama-sama.

Ringkasan prinsip MySQL: sambung kiri, sambung kanan, sambung dalam dan sambung Hash

Pembelajaran yang disyorkan: tutorial video mysql

1. pangkalan data MySQL JOIN sambungan

Buat indeks pada berbilang jadual, dan berbilang jadual JOIN dan pernyataan subquery agak sukar. Ramai pembangun secara tidak sedar percaya bahawa JOIN akan mengurangkan kecekapan prestasi SQL, jadi mereka membahagikan SQL berbilang jadual kepada pertanyaan jadual tunggal, memikirkan bahawa ini akan menjejaskan kecekapan pelaksanaan SQL kerana pembangun tidak memahami proses pelaksanaan JOIN.

Perkaitan jadual antara cantuman menggunakan indeks untuk padanan, dengan mengandaikan jadual R dan S dicantumkan.

Jadual R dipanggil jadual pemanduan Data yang ditapis mengikut keadaan WHERE dalam jadual R akan disoal satu persatu pada indeks yang sepadan dengan jadual S. Jika jumlah jadual pemacu data R tidak besar, algoritma di atas sangat berkesan.

Tiga jenis JOIN berikut, jadual yang manakah adalah jadual pemanduan:

SELECT * FROM R LEFT JOIN S ON R.x = S.x WEHRE ...
SELECT * FROM R RIGHT JOIN S ON R.x = S.x WEHRE ...
SELECT * FROM R INNER JOIN S ON R.x = S.x WEHRE ...

1 cantuman dalaman

Untuk INNER JOIN, meja pemanduan mungkin jadual R atau jadual S. Memaparkan data yang dikongsi oleh bahagian kiri dan kanan.

Dalam senario ini, sesiapa yang perlu menanyakan jumlah data yang lebih kecil akan memandu jadual. Mari lihat contoh berikut

SELECT * FROM R INNER JOIN S  ON R.x = S.x  WHERE R.y = ? AND S.z = ?

2 LEFT JOIN

Untuk Left Join di atas, jadual pemanduan ialah jadual kiri. R; Di Right Join, jadual pemanduan ialah jadual S yang betul. Ini ialah jenis JOIN yang menentukan sama ada data dalam jadual kiri atau jadual kanan mesti disoal.

Mengembalikan semua rekod dalam jadual kiri dan rekod dengan medan gabungan yang sama dalam jadual kanan. Mengembalikan semua baris dari jadual kiri walaupun tiada padanan dalam jadual kanan.

SELECT * FROM R LEFT JOIN S  ON R.x = S.x  WHERE R.y = ? AND S.z = ?

3 KANAN SERTAI

Untuk Gabungan Kiri di atas, jadual pemanduan ialah R; meja pemanduan Ia adalah meja S di sebelah kanan. Ini ialah jenis JOIN yang menentukan sama ada data dalam jadual kiri atau jadual kanan mesti disoal.

Mengembalikan semua rekod dalam jadual kanan dan rekod dengan medan gabungan yang sama dalam jadual kiri. Mengembalikan semua baris dari jadual kanan walaupun tiada padanan dalam jadual kiri.

SELECT * FROM R RIGHT JOIN S  ON R.x = S.x  WHERE R.y = ? AND S.z = ?

2. Pangkalan data MySQL Hash Join

1 > JOIN kedua dalam MySQL ialah Hash JOIN, yang digunakan apabila keadaan gabungan antara dua jadual tidak mempunyai indeks. Jika tiada sambungan, adakah boleh membuat indeks?

Jika sesetengah lajur ialah indeks dengan selektiviti rendah, data mesti diisih semasa membuat indeks untuk mengimport data, yang akan menjejaskan prestasi import, indeks kedua akan menghadapi masalah mengembalikan jadual. Jika jumlah data yang akan ditapis adalah besar, imbasan jadual penuh langsung akan menjadi lebih pantas.

Untuk pertanyaan perniagaan OLAP (OLAP ialah

pemprosesan analitik dalam talian

,

untuk analisis data

, yang membolehkan kami menganalisis maklumat daripada berbilang sistem pangkalan data secara serentak), ha sambungan Greek adalah satu ciri penting. MySQL 8.0 mula menyokong algoritma Hash Join, mengukuhkan sokongan untuk perniagaan OLAP. Oleh itu, jika volum data pertanyaan anda tidak terlalu besar dan masa tindak balas pertanyaan diperlukan pada tahap minit, anda boleh menggunakan satu contoh MySQL 8.0 untuk melengkapkan pertanyaan data besar.

2. Cara Hash JOIN berfungsi

Hash JOIN muncul dalam pelan pelaksanaan MySQL 8.0 mengimbas dua jadual yang berkaitan: Pertama , jadual cincang dibuat semasa imbasan jadual pemacu apabila jadual kedua diimbas, jadual cincang dicari untuk setiap rekod yang berkaitan. Jika dijumpai, rekod akan dikembalikan. Hash sertai jadual pemacu pemilihan dan algoritma sambung gelung bersarang, kedua-duanya pada dasarnya adalah sama. Kedua-dua jadual yang lebih kecil digunakan sebagai jadual pemacu Jika jadual pemacu adalah besar dan jadual cincang yang dibuat melebihi saiz memori, MySQL secara automatik akan membuang keputusan ke cakera.

3. Subkueri

Saya mendapati bahawa agak ramai pelajar pembangunan, termasuk saya sendiri, lebih suka menulis subkueri berbanding kenyataan JOIN tradisional. Logik subquery sangat jelas. Walaupun JOIN juga boleh memenuhi keperluan, ia tidak mudah untuk difahami kerana LEFT JOIN adalah hubungan algebra dan subqueries lebih cenderung untuk difahami dari perspektif pemikiran manusia.

Walau bagaimanapun, dalam MySQL 8.0, pengoptimum akan mengoptimumkan subkueri secara automatik ke dalam pelan pelaksanaan JOIN, yang akan meningkatkan prestasi dengan ketara.

Kita hanya perlu memberi perhatian kepada pelan pelaksanaan SQL Jika kedua-dua pelan pelaksanaan adalah sama, tidak akan ada perbezaan dalam prestasi.

Sebelum MySQL 8.0, MySQL tidak mengoptimumkan subkueri sepenuhnya. Oleh itu, anda akan melihat pembayang DEPENDENT SUBQUERY dalam pelan pelaksanaan subquery, yang menunjukkan bahawa ia adalah subquery bergantung, dan subquery perlu bergantung pada perkaitan jadual luaran. SUBQUERY BERGANTUNG boleh menjadi sangat lambat untuk berprestasi dan kebanyakan masa anda perlu menukarnya secara manual menjadi cantuman antara dua jadual.

Jadi blogger di sini mengingatkan semua, jika versi MySQL 8.0 semasa anda boleh menulis subqueries, kerana pengoptimuman subquery adalah cukup lengkap; MySQL, anda perlu melihat rancangan pelaksanaan SQL semua subquery. Petua untuk DEPENDENT SUBQUERY mesti dioptimumkan, jika tidak, ia akan mempunyai kesan prestasi yang ketara pada perniagaan;

Pembelajaran yang disyorkan:

tutorial video mysql

Atas ialah kandungan terperinci Ringkasan prinsip MySQL: sambung kiri, sambung kanan, sambung dalam dan sambung Hash. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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