Indeks Cipta Oracle

Indeks Cipta Oracle



Dalam pangkalan data Oracle, indeks merujuk kepada struktur data yang memajukan kelajuan operasi pengambilan data pada jadual pangkalan data. Walau bagaimanapun, ini mungkin dikenakan hukuman operasi tulis tambahan dan ruang storan pada pangkalan data anda.

Satu contoh di mana indeks pangkalan data akan berguna adalah dalam sistem pengurusan perhubungan pelanggan.







Dalam sistem sedemikian, kita boleh mempunyai jadual pangkalan data yang menyimpan maklumat pelanggan. Ini boleh termasuk nama, alamat, kaedah pembayaran, maklumat hubungan, dsb.



Jika jadual menyimpan banyak rekod, mungkin berjuta-juta daripadanya, ia boleh mengambil masa dan sumber yang lama untuk mencari maklumat pelanggan tertentu daripada pangkalan data. Ini adalah fenomena negatif, terutamanya dalam pangkalan data di mana prestasi adalah kritikal.



Untuk mengelilingi ini, kita boleh menggunakan indeks pangkalan data.





Sebagai contoh, kita boleh membuat indeks pada lajur nama pelanggan yang akan membolehkan sistem pangkalan data mencari dan mendapatkan semula maklumat pelanggan tertentu dengan cepat menggunakan nama tersebut. Oleh itu, bukannya enjin pangkalan data melalui semua baris dan lajur dalam jadual, ia hanya menggunakan indeks untuk mencari maklumat pelanggan.

Dalam tutorial ini, anda akan belajar cara menggunakan arahan CREATE INDEX dalam pangkalan data Oracle untuk memulakan indeks baharu.



Oracle Buat Penyata Indeks

Berikut menunjukkan sintaks pernyataan CREATE INDEX dalam pangkalan data Oracle:

BUAT INDEX nama_indeks
PADA nama_jadual (lajur1, lajur2, ...);

Sintaks di atas mencipta indeks bernama index_name pada jadual dengan nama table_name menggunakan lajur yang ditentukan (column1, column2, etc.) sebagai kunci untuk indeks.

Dalam Oracle, kunci utama ialah lajur atau set lajur yang secara unik mengenal pasti setiap baris dalam jadual. Secara lalai, Oracle secara automatik mencipta indeks unik pada lajur kunci utama jadual untuk menguatkuasakan kekangan keunikan dan meningkatkan prestasi carian kunci utama.

Walau bagaimanapun, dalam beberapa kes, anda mungkin perlu mencipta indeks baharu untuk jadual tertentu secara manual.

Mari kita lihat beberapa contoh bagaimana kita boleh mencapai ini.

Contoh Indeks Cipta Oracle

Katakan kita mempunyai jadual yang mengandungi maklumat pekerja seperti yang ditunjukkan dalam output di bawah:

pilih nama_pertama, nama_keluarga, gaji, tarikh_pekerjaan daripada PEKERJA;

Oracle Cipta Indeks untuk Lajur Tunggal

Katakan kita ingin membuat indeks menggunakan lajur first_name. Kita boleh menjalankan pertanyaan seperti yang ditunjukkan:

buat indeks first_name_lookup pada EMPLOYEES(FIRST_NAME);

Penyataan CREATE INDEX ini mencipta indeks bernama first_name_lookup pada jadual EMPLOYEES, menggunakan lajur FIRST_NAME sebagai kunci untuk indeks. Indeks ini boleh digunakan untuk meningkatkan prestasi pertanyaan yang mencari pekerja mengikut nama pertama mereka.

Sebaik sahaja kami membuat indeks, kami boleh menggunakannya untuk mencari pekerja tertentu seperti yang ditunjukkan:

PILIH first_name, last_name, gaji, hire_date
DARIPADA pekerja
WHERE first_name = 'William';

Keputusan:

Tanpa indeks first_name_lookup, sistem pangkalan data perlu mengimbas keseluruhan jadual PEKERJA untuk mencari semua baris di mana lajur FIRST_NAME adalah sama dengan 'William.' Walau bagaimanapun, dengan indeks tersedia, sistem pangkalan data boleh mencari baris dengan cepat dalam indeks menggunakan nilai 'John' sebagai kunci dan kemudian dapatkan baris yang diminta daripada jadual, yang akan menjadi lebih pantas.

Anda boleh melihat langkah-langkah yang digunakan semasa membuat pertanyaan menggunakan arahan explain plan seperti yang ditunjukkan:

terangkan rancangan untuk SELECT first_name, last_name, gaji, hire_date
DARIPADA pekerja
WHERE first_name = 'William';

Pelan pertanyaan terhasil:

Contoh 2 – Oracle Cipta Indeks dengan Berbilang Lajur

Begitu juga, kita boleh mencipta indeks yang terdiri daripada lebih daripada satu lajur dalam jadual tertentu. Sebagai contoh, katakan kita ingin mencipta indeks yang terdiri daripada lajur first_name dan last_name.

Kita boleh menggunakan kod seperti yang ditunjukkan:

buat indeks multi_lookup pada PEKERJA(FIRST_NAME, LAST_NAME);

Penyataan CREATE INDEX ini mencipta indeks bernama multi_lookup pada jadual EMPLOYEES, menggunakan lajur FIRST_NAME dan LAST_NAME sebagai kunci untuk indeks.

Setelah dibuat, kita boleh menggunakan indeks ini seperti yang ditunjukkan dalam pertanyaan sampel seperti yang ditunjukkan:

PILIH first_name, last_name, gaji, hire_date
DARIPADA pekerja
DI MANA first_name = 'William' DAN last_name = 'Smith';

Nilai terhasil:

Dan di sana, anda mempunyai kaedah untuk mempercepatkan pertanyaan pangkalan data anda dengan menggunakan indeks untuk mengehadkan skop carian.

Kesimpulan

Pernyataan CREATE INDEX dalam Oracle membolehkan kami mencipta indeks pada jadual untuk meningkatkan prestasi operasi pengambilan data. Walau bagaimanapun, walaupun indeks boleh meningkatkan prestasi pertanyaan, ia juga dikenakan penalti ruang storan, yang membawa kepada pengurangan kelajuan menulis operasi, menggunakannya hanya apabila perlu.