Indeks Fungsian dalam MySQL
Dalam sistem pengurusan pangkalan data seperti Oracle, indeks berfungsi membenarkan anda mengindeks berdasarkan fungsi tertentu yang digunakan pada lajur , menyediakan keupayaan carian yang cekap untuk pertanyaan yang kompleks. Oracle, sebagai contoh, menyokong pengindeksan berdasarkan fungsi seperti SUBSTRING(id,1,8).
Walau bagaimanapun, MySQL sememangnya tidak menyokong indeks berasaskan fungsi dalam pengertian umum. Malah dalam versi terkininya (sehingga 5.6 pada masa perbincangan ini), MySQL tidak mempunyai fungsi ini.
Alternatif untuk MySQL
Walaupun MySQL tidak menyokong fungsi secara langsung -berasaskan indeks, terdapat pendekatan alternatif untuk mencapai hasil yang serupa:
Awalan Lajur Utama Pengindeksan:
MySQL membenarkan anda mengindeks bahagian utama lajur, tetapi bukan mengimbangi sewenang-wenangnya dalam lajur. Contohnya, anda boleh mencipta indeks menggunakan lima aksara pertama nama seperti berikut:
create index name_first_five on cust_table (name(5));
Lajur Terbitan dengan Pencetus:
Untuk ungkapan yang lebih kompleks, anda boleh membuat lajur berasingan yang mengandungi data diindeks yang dikehendaki. Anda kemudian boleh menggunakan pencetus sisipan/kemas kini untuk mengisi lajur ini dan mengekalkan ketekalan data. Ini pada asasnya mencontohi indeks berfungsi dengan menyediakan versi prakiraan bagi data diindeks yang diingini.
Walaupun pendekatan ini memperkenalkan beberapa lebihan dari segi storan data, ia mencapai faedah prestasi yang serupa. Ia juga mengurangkan kemungkinan pelanggaran bentuk normal ketiga (3NF) dengan memastikan penyegerakan data melalui pencetus.
Atas ialah kandungan terperinci Adakah MySQL Menyokong Indeks Fungsian Seperti Oracle, dan Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!