Mari kita perhatikan contoh: tabel dengan catatan faktur, dan tabel terkait dengan catatan item baris faktur. Pertimbangkan kode semu klien:
for each (invoice in invoices)
let invoiceLines = FindLinesFor(invoice)
...
Jika Anda memiliki 100.000 faktur dengan masing-masing 10 baris, kode ini akan mencari 10 baris faktur dari tabel 1 juta, dan itu akan melakukannya 100.000 kali. Saat ukuran tabel bertambah, jumlah operasi terpilih meningkat, dan biaya setiap operasi pilih meningkat.
Karena komputer cepat, Anda mungkin tidak melihat perbedaan kinerja antara kedua pendekatan jika Anda memiliki beberapa ribu catatan atau lebih sedikit. Karena kenaikan biaya lebih dari linier, karena jumlah catatan meningkat (dalam jutaan, katakanlah), Anda akan mulai melihat perbedaan, dan perbedaannya akan menjadi kurang dapat ditoleransi ketika ukuran kumpulan data bertambah.
Bergabung, bagaimanapun. akan menggunakan indeks tabel dan menggabungkan dua set data. Ini berarti Anda memindai tabel kedua secara efektif sekali daripada mengaksesnya secara acak sebanyak N kali. Jika ada kunci asing yang ditentukan, database sudah memiliki tautan antara catatan terkait yang disimpan secara internal.
Bayangkan melakukan ini sendiri. Anda memiliki daftar siswa dan buku catatan menurut abjad dengan semua laporan nilai siswa (satu halaman per kelas). Buku catatan diurutkan sesuai dengan nama siswa, dalam urutan yang sama dengan daftar. Bagaimana Anda memilih untuk melanjutkan?
- Baca nama dari daftar.
- Buka buku catatan.
- Temukan nama siswa.
- Baca nilai siswa, balik halaman sampai Anda mencapai siswa berikutnya atau halaman terakhir.
- Tutup buku catatan.
- Ulang.
Atau:
- Buka buku catatan ke halaman pertama.
- Baca nama dari daftar.
- Baca nilai apa pun untuk nama itu dari buku catatan.
- Ulangi langkah 2-3 sampai Anda mencapai akhir
- Tutup buku catatan.