SQLite - Indeks

Indeks adalah tabel pencarian khusus yang dapat digunakan mesin pencari database untuk mempercepat pengambilan data. Sederhananya, fileindexadalah penunjuk ke data dalam tabel. Indeks dalam database sangat mirip dengan indeks di bagian belakang buku.

Misalnya, jika Anda ingin mereferensikan semua halaman dalam sebuah buku yang membahas topik tertentu, Anda terlebih dahulu merujuk ke indeks, yang mencantumkan semua topik menurut abjad dan kemudian merujuk ke satu atau beberapa nomor halaman tertentu.

Indeks membantu mempercepat kueri SELECT dan klausa WHERE, tetapi memperlambat input data, dengan pernyataan UPDATE dan INSERT. Indeks dapat dibuat atau dihapus tanpa berpengaruh pada data.

Membuat indeks melibatkan pernyataan CREATE INDEX, yang memungkinkan Anda memberi nama indeks, menentukan tabel dan kolom atau kolom mana yang akan diindeks, dan untuk menunjukkan apakah indeks dalam urutan naik atau turun.

Indeks juga bisa unik, mirip dengan batasan UNIK, di mana indeks mencegah entri duplikat dalam kolom atau kombinasi kolom yang memiliki indeks.

Perintah CREATE INDEX

Berikut ini adalah sintaks dasar CREATE INDEX.

CREATE INDEX index_name ON table_name;

Indeks Kolom Tunggal

Indeks satu kolom adalah indeks yang dibuat hanya berdasarkan satu kolom tabel. Sintaks dasarnya adalah sebagai berikut -

CREATE INDEX index_name
ON table_name (column_name);

Indeks Unik

Indeks unik digunakan tidak hanya untuk kinerja, tetapi juga untuk integritas data. Indeks unik tidak mengizinkan nilai duplikat untuk dimasukkan ke dalam tabel. Sintaks dasarnya adalah sebagai berikut -

CREATE UNIQUE INDEX index_name
on table_name (column_name);

Indeks Komposit

Indeks komposit adalah indeks pada dua atau lebih kolom dari sebuah tabel. Sintaks dasarnya adalah sebagai berikut -

CREATE INDEX index_name
on table_name (column1, column2);

Apakah akan membuat indeks kolom tunggal atau indeks komposit, pertimbangkan kolom yang mungkin sangat sering Anda gunakan dalam klausa WHERE kueri sebagai kondisi filter.

Jika hanya ada satu kolom yang digunakan, indeks satu kolom harus menjadi pilihan. Jika ada dua atau lebih kolom yang sering digunakan di klausa WHERE sebagai filter, indeks komposit akan menjadi pilihan terbaik.

Indeks Implisit

Indeks implisit adalah indeks yang secara otomatis dibuat oleh server database saat objek dibuat. Indeks secara otomatis dibuat untuk batasan kunci utama dan batasan unik.

Example

Berikut adalah contoh di mana kita akan membuat indeks di tabel PERUSAHAAN untuk kolom gaji -

sqlite> CREATE INDEX salary_index ON COMPANY (salary);

Sekarang, mari daftar semua indeks yang tersedia di tabel PERUSAHAAN menggunakan .indices perintah sebagai berikut -

sqlite> .indices COMPANY

Ini akan menghasilkan hasil sebagai berikut, di mana sqlite_autoindex_COMPANY_1 adalah indeks implisit yang dibuat saat tabel itu sendiri dibuat.

salary_index
sqlite_autoindex_COMPANY_1

Anda dapat membuat daftar semua database indeks sebagai berikut -

sqlite> SELECT * FROM sqlite_master WHERE type = 'index';

Perintah DROP INDEX

Indeks dapat dihapus menggunakan SQLite DROPperintah. Kehati-hatian harus diambil saat menurunkan indeks karena kinerja mungkin melambat atau ditingkatkan.

Berikut ini adalah sintaks dasarnya sebagai berikut -

DROP INDEX index_name;

Anda dapat menggunakan pernyataan berikut untuk menghapus indeks yang dibuat sebelumnya.

sqlite> DROP INDEX salary_index;

Kapan Indeks Harus Dihindari?

Meskipun indeks dimaksudkan untuk meningkatkan kinerja database, ada kalanya indeks harus dihindari. Panduan berikut menunjukkan kapan penggunaan indeks harus dipertimbangkan kembali.

Indeks tidak boleh digunakan di -

  • Meja kecil.
  • Tabel yang memiliki operasi penyisipan atau pembaruan batch besar yang sering.
  • Kolom yang berisi nilai NULL dalam jumlah tinggi.
  • Kolom yang sering dimanipulasi.