Memahami Algoritma Cantuman
Terokai cara PostgreSQL melaksanakan jenis cantuman yang berbeza: Gelung Bersarang, Cantuman Hash dan Cantuman Gabung.
Memahami Algoritma Cantuman ialah pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan percuma di CoddyKit. Ini ialah pelajaran 1 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Prestasi PostgreSQL & Pengoptimuman Pertanyaan merangkumi sejumlah 4 pelajaran.
Cantuman: Menghubungkan Data
Selamat datang ke topik algoritma cantuman PostgreSQL! Cantuman merupakan asas untuk menggabungkan data daripada berbilang jadual.
Cantuman membolehkan anda mendapatkan maklumat berkaitan yang tersebar merentasi skema pangkalan data, lalu membentuk gambaran yang lengkap.
Melangkaui Cantuman Asas
Apabila anda menulis klausa JOIN, PostgreSQL tidak hanya memilih satu cara untuk melaksanakannya. PostgreSQL mempunyai beberapa algoritma berkuasa yang boleh digunakan.
Perancang pertanyaan pangkalan data memilih algoritma yang paling cekap berdasarkan faktor seperti saiz jadual, indeks yang tersedia dan taburan data.
Asas Cantuman Gelung Bersarang
Cantuman Gelung Bersarang (NLJ) ialah algoritma yang paling mudah. Ia berfungsi seperti gelung 'for' bersarang:
- Untuk setiap baris dalam jadual luar...
- Ia mengimbas jadual dalam untuk mencari baris yang sepadan.
NLJ cekap untuk set data kecil atau apabila lajur cantuman jadual dalam diindeks, yang membolehkan carian pantas.
NLJ dalam Tindakan
Pertimbangkan cantuman jadual kecil users dengan jadual user_details. Jika user_details.user_id diindeks, NLJ boleh menjadi sangat pantas.
Cuba cipta dan cantumkan jadual ini:
CREATE TABLE users (user_id INT PRIMARY KEY, name VARCHAR(50));
CREATE TABLE user_details (detail_id INT PRIMARY KEY, user_id INT, address VARCHAR(100));
INSERT INTO users VALUES (1, 'Alice'), (2, 'Bob');
INSERT INTO user_details VALUES (101, 1, '123 Main St'), (102, 2, '456 Oak Ave');
SELECT u.name, ud.address
FROM users u
JOIN user_details ud ON u.user_id = ud.user_id;Cantuman Hash: Padanan Lebih Pantas
Cantuman Hash sering dipilih untuk jadual yang lebih besar dan tidak diisih, khususnya dengan syarat cantuman kesamaan (=). Ia berfungsi dalam dua fasa:
- Fasa Pembinaan: PostgreSQL mengimbas jadual yang lebih kecil (atau dianggarkan lebih kecil) dan membina jadual hash dalam memori menggunakan kunci cantuman.
- Fasa Penyiasatan: Ia mengimbas jadual yang lebih besar, menghasilkan hash bagi kunci cantuman setiap baris dan menyiasat jadual hash untuk mencari padanan.
Kaedah ini sangat berkesan apabila memori yang mencukupi tersedia untuk jadual hash.
Senario Cantuman Hash
Bayangkan mencantumkan dua jadual besar, products dan sales, berdasarkan product_id. Jika tiada satu pun jadual diisih atau diindeks berdasarkan product_id, Cantuman Hash ialah calon yang kukuh.
Perancang berkemungkinan memilih Cantuman Hash untuk pertanyaan ini:
CREATE TABLE products (product_id INT PRIMARY KEY, name VARCHAR(50));
CREATE TABLE sales (sale_id INT PRIMARY KEY, product_id INT, quantity INT);
INSERT INTO products VALUES (1, 'Laptop'), (2, 'Mouse');
INSERT INTO sales VALUES (1001, 1, 2), (1002, 2, 1), (1003, 1, 3);
SELECT p.name, s.quantity
FROM products p
JOIN sales s ON p.product_id = s.product_id;Cantuman Gabungan: Kecekapan Terisih
Cantuman Gabungan sangat cekap apabila kedua-dua jadual sudah diisih berdasarkan kunci cantuman atau boleh diisih dengan kos yang rendah. Ia juga berfungsi dalam beberapa fasa:
- Fasa Pengisihan: Jika belum diisih, kedua-dua jadual diisih berdasarkan lajur cantuman masing-masing.
- Fasa Penggabungan: PostgreSQL mengimbas kedua-dua jadual yang telah diisih secara serentak sambil menggabungkan baris yang sepadan. Ia seperti menggabungkan dua senarai yang telah diisih.
Kaedah ini bermanfaat untuk cantuman julat atau apabila data diperoleh dalam susunan terisih.
Kes Penggunaan Cantuman Gabungan
Jika anda mencantumkan dua jadual, employees dan departments, dan kedua-duanya diindeks (dan oleh itu sering terisih) berdasarkan lajur ID masing-masing, atau jika pertanyaan anda melibatkan ORDER BY pada kunci cantuman, Cantuman Gabungan boleh menjadi pilihan yang optimum.
PostgreSQL mungkin menggunakan Cantuman Gabungan di sini:
CREATE TABLE employees (emp_id INT PRIMARY KEY, dept_id INT, name VARCHAR(50));
CREATE TABLE departments (dept_id INT PRIMARY KEY, dept_name VARCHAR(50));
INSERT INTO employees VALUES (1, 10, 'John'), (2, 20, 'Jane');
INSERT INTO departments VALUES (10, 'HR'), (20, 'IT');
SELECT e.name, d.dept_name
FROM employees e
JOIN departments d ON e.dept_id = d.dept_id
ORDER BY e.emp_id;Keputusan PostgreSQL
Perancang pertanyaan PostgreSQL menggunakan pengoptimum berasaskan kos untuk menentukan algoritma cantuman yang hendak digunakan. Ia menganggarkan kos setiap pelan yang mungkin berdasarkan:
- Statistik jadual dan indeks
- Memori yang tersedia (
work_mem) - Jenis syarat cantuman (contohnya, kesamaan atau julat)
- Bilangan baris yang dianggarkan
Penggunaan EXPLAIN amat penting untuk melihat algoritma yang dipilih oleh perancang!
Cabaran Algoritma
Anda perlu mencantumkan dua jadual yang sangat besar, customers dan orders, berdasarkan customer_id. Tiada indeks pada customer_id dalam mana-mana jadual dan data tidak diisih. Algoritma cantuman manakah yang paling berkemungkinan dipilih oleh PostgreSQL untuk prestasi optimum?
Algoritma Cantuman: Kesimpulan Utama
Dalam pelajaran ini, anda meneroka tiga algoritma cantuman utama yang digunakan oleh PostgreSQL:
- Cantuman Gelung Bersarang: Mudah dan sesuai untuk set kecil atau jadual dalam yang diindeks.
- Cantuman Hash: Cekap untuk jadual besar yang tidak diisih dengan cantuman kesamaan, menggunakan jadual hash.
- Cantuman Gabungan: Terbaik apabila jadual sudah diisih berdasarkan kunci cantuman atau boleh diisih dengan kos yang rendah.
Memahami perkara ini membantu anda mentafsir pelan EXPLAIN dan menulis pertanyaan yang lebih berprestasi. Seterusnya, kita akan melihat cara menulis semula cantuman yang kompleks!
Pelajari SQL dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 22
- Pelajaran
- 88
Soalan Lazim
Adakah pelajaran “Memahami Algoritma Cantuman” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan, termasuk “Memahami Algoritma Cantuman”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Prestasi PostgreSQL & Pengoptimuman Pertanyaan merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Memahami Algoritma Cantuman”?
Terokai cara PostgreSQL melaksanakan jenis cantuman yang berbeza: Gelung Bersarang, Cantuman Hash dan Cantuman Gabung. Anda berlatih Prestasi PostgreSQL & Pengoptimuman Pertanyaan menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Prestasi PostgreSQL & Pengoptimuman Pertanyaan?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 1 daripada 4.
Berapa lamakah pelajaran “Memahami Algoritma Cantuman” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan ini?
Ya. Setiap pelajaran Prestasi PostgreSQL & Pengoptimuman Pertanyaan menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memahami Algoritma Cantuman
- Menulis Semula Cantuman Kompleks
- Subpertanyaan berbanding CTE berbanding Cantuman
- Mengoptimumkan Cantuman LATERAL dan Carian Berkorelasi