Rangkuman SQL Lanjutan — Batasan, Desain, dan Tuning Sekilas
Rangkuman seri SQL Lanjutan. Saling merujuk antara UPDATE/DELETE lanjutan dan UPSERT, batasan dan kunci asing, type affinity dan STRICT, normalisasi dan tampilan, serta desain indeks dan tuning yang dimulai dari EXPLAIN QUERY PLAN — dengan diagram dan indeks artikel.
Gambaran besar dari yang kamu pelajari di SQL Lanjutan
Halaman ini merangkai seri SQL Lanjutan dalam satu halaman, dilihat lewat tiga sudut pandang: batasan dan desain yang menjaga data tetap aman, skema yang mudah dibaca dan benar, serta indeks dan tuning untuk kueri yang cepat.
Setelah memungut sintaks di seri Dasar dan agregasi, JOIN, serta window function di seri Menengah, Lanjutan ini soal menjaga data tetap benar dan membuatnya berjalan cepat — desain dan tuning.
Pakai tautan ke artikel mana pun untuk melompat balik dan mengulang kapan saja.
Menjaga data tetap benar — penulisan lanjutan, batasan, kunci asing, tipe, desain
Kita membahas UPDATE / DELETE lanjutan dan UPSERT dengan subquery dan JOIN, batasan kolom dan kunci asing, type affinity dan STRICT, lalu lanjut ke normalisasi, tampilan, dan praktik desain.
Diagram di bawah mengelompokkan DML lanjutan dan batasan/tipe jadi satu, serta desain/tampilan jadi satu.
| Kategori | Artikel | Yang kamu pelajari |
|---|---|---|
| Penulisan lanjutan | UPDATE / DELETE dengan Subquery dan JOIN | Correlated update, UPDATE … FROM, DELETE dengan kondisi subquery |
| Penulisan lanjutan | UPSERT (ON CONFLICT) dan Aplikasi Bulk INSERT | INSERT … ON CONFLICT DO UPDATE, excluded, bulk INSERT |
| Batasan | Batasan Kolom — NOT NULL / UNIQUE / CHECK / PRIMARY KEY | NOT NULL / UNIQUE / CHECK / PRIMARY KEY dan pelanggarannya |
| Kunci asing | Batasan Foreign Key dan Aksi Referensial | REFERENCES, ON DELETE / UPDATE, foreign_keys=ON |
| Perubahan batasan | Menambah/Mengubah Batasan dan Redefinisi Tabel | Me-retrofit batasan, prosedur rebuild tabel |
| Tipe | String, Angka, Boolean, dan Konversi Tipe Implisit | Type affinity, konversi implisit, vs. tipe ketat |
| Tipe | Tipe Tanggal/Waktu dan Tabel STRICT | Menyimpan dan membandingkan tanggal/waktu, tabel STRICT |
| Desain | Desain Tabel dan Normalisasi | 1NF ke 3NF, menghapus kolom berulang, skema 3 lapis |
| Desain | Tampilan (VIEW) | CREATE VIEW, memakai tampilan, tampilan yang bisa di-update |
Membuat kueri cepat — execution plan, indeks, tuning
Baca rencana dengan EXPLAIN QUERY PLAN, pahami statistik, optimizer, dan algoritma join, kuasai desain indeks, index-only scan, indexing untuk sorting dan grouping, serta pola di mana indeks tidak aktif, lalu tutup dengan penulisan ulang kueri.
Tabel di bawah merapikan setiap artikel.
| Kategori | Artikel | Yang kamu pelajari |
|---|---|---|
| Execution plan | Membaca Execution Plan | Kosakata: SCAN / SEARCH / USE TEMP B-TREE dan lainnya |
| Statistik | Statistik dan Optimizer | ANALYZE, sqlite_stat1, selektivitas dan perubahan plan |
| Join | Algoritma Join dan Urutan Join | Nested loop, urutan join, indeks otomatis |
| Indeks | Indeks — Komposit, Parsial, Ekspresi, UNIQUE | Indeks komposit, parsial, ekspresi, UNIQUE dengan EXPLAIN |
| Indeks | Desain Indeks | Urutan kolom komposit, leftmost prefix, kondisi yang memakai indeks |
| Indeks | Index-Only Scan | Index-only scan, USING COVERING INDEX |
| Indeks | Indexing ORDER BY / GROUP BY | Menghindari USE TEMP B-TREE, indexing sorting dan grouping |
| Indeks | Saat Indeks Tidak Bekerja | Fungsi pada kolom, cast implisit, LIKE, OR, dan perbaikan indeks ekspresi/parsial |
| Penulisan ulang | Penulisan Ulang Kueri ① IN / EXISTS dan dekorelasi | IN vs EXISTS, menghapus korelasi, semi-join / anti-join |
| Penulisan ulang | Penulisan Ulang Kueri ② menghilangkan pekerjaan berulang, contoh kerja | Menghilangkan pekerjaan berulang, optimasi subquery dengan contoh |
Kerja bagus!
Sampai di sini kamu sudah merangkai UPDATE / DELETE lanjutan dan UPSERT, sisi desain dengan batasan, kunci asing, tipe, normalisasi, dan tampilan, serta sisi tuning dengan desain indeks dan lainnya, dimulai dari EXPLAIN QUERY PLAN.
Ini juga menandai berakhirnya ketiga tingkat kursus SQL — Dasar, Menengah, dan Lanjutan.
Hebat sudah menyelesaikan semuanya sampai tuntas.
Kembali ke artikel mana pun yang menarik perhatianmu dan teruslah bereksperimen dengan datamu sendiri.