Traffine I/O

Bahasa Indonesia

2023-03-14

Full Table Scan, Index Unique Scan, dan Index Range Scan

Pengantar

Dalam dunia SQL, teknik pengambilan data memainkan peran penting dalam kinerja keseluruhan operasi data. Artikel ini memperkenalkan gambaran umum tentang berbagai metode pemindaian yang digunakan dalam SQL: Full Table Scan, Index Unique Scan (Index Unique Scan), dan Index Range Scan.

Full Table Scan

Full Table Scan mengacu pada operasi di mana setiap baris dalam tabel diperiksa untuk mengambil data. Ini melibatkan pemeriksaan setiap catatan dalam tabel untuk mengambil catatan yang diinginkan atau memastikan bahwa tidak ada catatan seperti itu.

Full Table Scan bisa memakan waktu lama, terutama ketika tabel berisi jumlah data yang besar (sekitar satu juta atau lebih). Hal ini disebabkan oleh sifat menyeluruh dari operasi di mana setiap catatan diakses dan diperiksa secara individu.

Contoh Kasus Penggunaan

Kasus penggunaan umum untuk Full Table Scan adalah ketika Anda perlu memilih semua catatan dari tabel. Dalam SQL, ini dapat dilakukan menggunakan perintah berikut:

sql
SELECT * FROM users;

Full Table Scan juga digunakan ketika Anda melakukan penyaringan berdasarkan kolom yang tidak memiliki indeks. Misalnya:

sql
SELECT * FROM users WHERE name="hoge";

Situasi lain adalah ketika indeks tidak dapat digunakan secara efisien karena sifat kueri. Hal ini dapat terjadi ketika Anda menggunakan karakter wildcard dalam pola pencarian, karena hal ini mencegah penggunaan indeks dengan efisien. Misalnya:

sql
SELECT * FROM users WHERE name LIKE "%hoge%";

Index Unique Scan

Index Unique Scan adalah operasi pencarian di mana suatu catatan unik dalam tabel ditemukan menggunakan indeks. Tujuannya adalah menemukan satu catatan unik, dan begitu ditemukan, operasi pencarian berakhir.

Karena sifat operasinya, Index Unique Scan dapat menyelesaikan pemrosesan dengan cepat. Pencarian berakhir begitu catatan unik ditemukan, membuatnya menjadi metode yang sangat efisien, terutama ketika berurusan dengan jumlah data yang besar.

Contoh Kasus Penggunaan

Index Unique Scan biasanya digunakan ketika melakukan penyaringan catatan berdasarkan kunci utama atau kunci unik. Berikut contoh query-nya:

sql
SELECT * FROM users WHERE id=10;

Operasi ini dapat diselesaikan dengan cepat karena sifat unik dari kunci utama, yang memungkinkan database untuk dengan cepat menemukan dan mengembalikan catatan yang diminta.

Index Range Scan (Index Range Scan)

Index Range Scan adalah operasi pencarian yang menggunakan indeks untuk mengambil beberapa baris dari sebuah tabel. Berbeda dengan Index Unique Scan, metode ini dimaksudkan untuk mengambil lebih dari satu catatan.

Waktu yang dibutuhkan untuk menjalankan Index Range Scan dapat bervariasi berdasarkan jumlah catatan yang perlu diambil. Waktu pemrosesan ini berbanding lurus dengan jumlah catatan target - semakin banyak catatan yang diambil, semakin lama waktu yang dibutuhkan.

Contoh Kasus Penggunaan

Index Range Scan biasanya digunakan ketika melakukan penyaringan berdasarkan kunci non-unik. Contoh dari query seperti ini adalah:

sql
SELECT * FROM users WHERE age=50;

Dalam kasus ini, operasi tersebut dapat mengambil beberapa catatan yang memenuhi kondisi yang ditentukan (misalnya, pengguna dengan usia 50 tahun).

Kapan Menggunakan Full Table Scan vs Pemindaian Indeks

Pemindaian Indeks seringkali dapat berkinerja lebih efisien karena tidak memerlukan pembacaan seluruh dataset. Mereka dapat langsung menemukan data yang dibutuhkan, sehingga mengurangi waktu pemrosesan.

Di sisi lain, Full Table Scan dapat memakan waktu lebih lama, terutama dengan peningkatan volume data. Namun, mereka dapat mempertahankan tingkat kinerja yang konstan, tidak bergantung pada ukuran data.

Faktor-faktor Penentu Pemilihan Pemindaian

  • Volume Data
    Pilihan antara menggunakan Full Table Scan dan Pemindaian Indeks biasanya ditentukan oleh volume data. Jika volume data kecil (sekitar 10.000 catatan atau kurang), perbedaan waktu pemrosesan antara menggunakan Pemindaian Indeks dan Full Table Scan dapat diabaikan.

  • Proporsi Data yang Dapat Difilter
    Proporsi data yang dapat difilter juga mempengaruhi pemilihan metode pemindaian. Dalam kasus di mana data yang akan difilter hanya membentuk sebagian kecil dari total data, Full Table Scan terkadang lebih cepat. Efektivitas Full Table Scan versus Pemindaian Indeks sangat bergantung pada proporsi data yang dapat difilter dibandingkan dengan volume data total.

Pedoman untuk Memilih antara Full Table Scan dan Pemindaian Indeks

Pilihan antara Full Table Scan dan Pemindaian Indeks dapat tergantung pada proporsi baris yang akan difilter dibandingkan dengan jumlah total baris. Tabel berikut memberikan panduan umum mengenai jenis pemindaian yang mungkin lebih disukai:

Proporsi Baris yang Difilter dari Total Baris Jenis Pemindaian yang Direkomendasikan
20% atau lebih Full Table Scan
Antara 1% dan 20% Kasus per kasus (beberapa mengusulkan Pemindaian Indeks lebih cepat untuk kurang dari 15%)
Kurang dari 1% Pemindaian Indeks

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!