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:
SELECT * FROM users;
Full Table Scan juga digunakan ketika Anda melakukan penyaringan berdasarkan kolom yang tidak memiliki indeks. Misalnya:
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:
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:
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:
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 |