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.
Pembelajaran yang disyorkan: tutorial video mysql
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 ...
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 = ?
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 = ?
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 = ?
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
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 mysqlAtas 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!