Bolehkah MySQL Menggunakan Pengindeksan Berasaskan Fungsi?
MySQL, tidak seperti Oracle, sememangnya tidak menyokong pengindeksan berdasarkan fungsi seperti SUBSTRING(id ,1,8). Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai fungsi ini.
Pengindeksan Pemangkasan Lajur Terkemuka
MySQL membenarkan pengindeksan hanya bahagian utama lajur. Sebagai contoh, untuk mengindeks lima aksara pertama lajur nama, anda boleh menggunakan:
CREATE INDEX name_first_five ON cust_table (name(5));
Penyelesaian Pengindeksan Berasaskan Fungsi
Untuk berasaskan fungsi yang lebih kompleks pengindeksan, buat lajur tambahan dengan data yang diindeks. Selepas itu, laksanakan pencetus sisipan/kemas kini untuk mengekalkan ketekalan data antara lajur asal dan lajur diindeks. Pendekatan ini memastikan data yang diindeks kekal terkini.
Implikasi dan Pertimbangan
Walaupun penyelesaian ini meniru pengindeksan berasaskan fungsi, ia memperkenalkan beberapa pertimbangan:
Walau bagaimanapun, pendekatan berasaskan pencetus mengurangkan perkara ini dengan memastikan data disegerakkan, memberikan faedah prestasi yang serupa.
Atas ialah kandungan terperinci Adakah Pengindeksan Berasaskan Fungsi Sokongan MySQL, dan Jika Tidak, Apakah Penyelesaiannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!