Indeks Fungsional MySQL: Perbandingan dengan Oracle
Dalam Oracle, keupayaan untuk mencipta indeks berdasarkan fungsi, seperti SUBSTRING(id, 1,8), memberikan fleksibiliti dalam pengambilan data. Walau bagaimanapun, adakah MySQL menawarkan keupayaan yang serupa?
Keterbatasan MySQL
Tidak seperti Oracle, MySQL tidak secara langsung menyokong indeks berasaskan fungsi dalam pengertian tradisionalnya. Walaupun dalam versi 5.6, fungsi ini tidak tersedia. Walau bagaimanapun, versi kemudian, khususnya MySQL 8.0.13 dan ke atas, memperkenalkan indeks berfungsi, menangani had ini.
Untuk versi MySQL terdahulu, pilihan untuk mengindeks bahagian utama lajur wujud, tetapi bukan sebarang aksara berikutnya . Sebagai contoh, yang berikut mencipta indeks menggunakan lima aksara pertama lajur nama:
create index name_first_five on cust_table (name(5));
Pendekatan Alternatif dengan Pencetus
Untuk ungkapan yang lebih kompleks, pengguna MySQL boleh menggunakan pencetus sisipan/kemas kini untuk membuat lajur berasingan yang mengandungi data boleh diindeks. Ini memastikan bahawa data dalam kedua-dua lajur kekal disegerakkan.
Walaupun pendekatan ini mencipta lebihan, ia meniru manfaat prestasi indeks berasaskan fungsi. Ia juga mematuhi 3NF, kerana pencetus bertanggungjawab untuk mengekalkan ketekalan data.
Ringkasnya, manakala MySQL tidak menyokong indeks berasaskan fungsi secara asli seperti Oracle, ia menyediakan mekanisme lain untuk mencapai hasil yang serupa melalui pengindeksan aksara terkemuka atau penggunaan pencetus dan lajur tambahan.
Atas ialah kandungan terperinci Adakah MySQL Menawarkan Indeks Berasaskan Fungsi Seperti Oracle?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!