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.

Gambaran besar dari yang bisa kamu lakukan dengan SQL Lanjutan
MengubahUPDATE / DELETE / UPSERT lanjutanMenjaga benarBatasan / kunci asing / tipeMenataNormalisasi / tampilan / desainMembaca rencanaEXPLAIN / statistik / joinMempercepatDesain indekslindungitataukurtingkatkan
Mengubah data dengan DML lanjutan, menjaganya tetap benar dengan batasan, kunci asing, dan tipe, menata skema dengan desain, lalu mempercepat kueri dengan execution plan dan indeks.

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.

11 artikel tentang penulisan lanjutan, batasan, tipe, dan desain
Penulisan lanjutanMengubahAplikasiUPDATE / DELETEUPSERTON CONFLICTBatasan / tipeMenjaga benarBatasan / kunci asingperubahan batasanType affinitySTRICT / tanggalDesainMenataNormalisasi1NF ke 3NFTampilanpraktik desain
Mengubah data dengan penulisan lanjutan, melindungi kebenarannya dengan batasan, kunci asing, dan tipe, lalu menata skema dengan normalisasi, tampilan, dan praktik desain.
KategoriArtikelYang kamu pelajari
Penulisan lanjutanUPDATE / DELETE dengan Subquery dan JOINCorrelated update, UPDATE … FROM, DELETE dengan kondisi subquery
Penulisan lanjutanUPSERT (ON CONFLICT) dan Aplikasi Bulk INSERTINSERT … ON CONFLICT DO UPDATE, excluded, bulk INSERT
BatasanBatasan Kolom — NOT NULL / UNIQUE / CHECK / PRIMARY KEYNOT NULL / UNIQUE / CHECK / PRIMARY KEY dan pelanggarannya
Kunci asingBatasan Foreign Key dan Aksi ReferensialREFERENCES, ON DELETE / UPDATE, foreign_keys=ON
Perubahan batasanMenambah/Mengubah Batasan dan Redefinisi TabelMe-retrofit batasan, prosedur rebuild tabel
TipeString, Angka, Boolean, dan Konversi Tipe ImplisitType affinity, konversi implisit, vs. tipe ketat
TipeTipe Tanggal/Waktu dan Tabel STRICTMenyimpan dan membandingkan tanggal/waktu, tabel STRICT
DesainDesain Tabel dan Normalisasi1NF ke 3NF, menghapus kolom berulang, skema 3 lapis
DesainTampilan (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.

KategoriArtikelYang kamu pelajari
Execution planMembaca Execution PlanKosakata: SCAN / SEARCH / USE TEMP B-TREE dan lainnya
StatistikStatistik dan OptimizerANALYZE, sqlite_stat1, selektivitas dan perubahan plan
JoinAlgoritma Join dan Urutan JoinNested loop, urutan join, indeks otomatis
IndeksIndeks — Komposit, Parsial, Ekspresi, UNIQUEIndeks komposit, parsial, ekspresi, UNIQUE dengan EXPLAIN
IndeksDesain IndeksUrutan kolom komposit, leftmost prefix, kondisi yang memakai indeks
IndeksIndex-Only ScanIndex-only scan, USING COVERING INDEX
IndeksIndexing ORDER BY / GROUP BYMenghindari USE TEMP B-TREE, indexing sorting dan grouping
IndeksSaat Indeks Tidak BekerjaFungsi pada kolom, cast implisit, LIKE, OR, dan perbaikan indeks ekspresi/parsial
Penulisan ulangPenulisan Ulang Kueri ① IN / EXISTS dan dekorelasiIN vs EXISTS, menghapus korelasi, semi-join / anti-join
Penulisan ulangPenulisan Ulang Kueri ② menghilangkan pekerjaan berulang, contoh kerjaMenghilangkan 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.