Rumah >pangkalan data >tutorial mysql >Adakah MySQL Menawarkan Indeks Berasaskan Fungsi Seperti Oracle?

Adakah MySQL Menawarkan Indeks Berasaskan Fungsi Seperti Oracle?

Susan Sarandon
Susan Sarandonasal
2024-12-16 06:40:11201semak imbas

Does MySQL Offer Function-Based Indexes Like Oracle?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn