Tidak, tidak secara umum, saya tidak percaya bahkan 5.6 (versi terbaru ketika jawaban ini pertama kali ditulis) memiliki fungsi ini. Perlu dicatat bahwa 8.0.13 dan di atasnya sekarang mendukung indeks fungsional , memungkinkan Anda mencapai apa yang Anda butuhkan tanpa metode pemicu yang dijelaskan di bawah.
Jika Anda menjalankan mysql
versi lama , itu adalah mungkin hanya menggunakan terkemuka bagian dari kolom (fungsi ini telah ada sejak lama), tetapi tidak satu pun yang dimulai dari karakter kedua atau berikutnya, atau fungsi lain yang lebih kompleks.
Misalnya, berikut ini membuat indeks menggunakan lima karakter pertama dari sebuah nama:
create index name_first_five on cust_table (name(5));
Untuk ekspresi yang lebih kompleks, Anda dapat mencapai efek serupa dengan memiliki lain kolom dengan data yang dapat diindeks di dalamnya, lalu gunakan pemicu sisipkan/perbarui untuk memastikannya diisi dengan benar.
Selain ruang yang terbuang untuk data yang berlebihan, itu adalah hal yang hampir sama.
Dan, meskipun secara teknis melanggar 3NF, hal itu dikurangi dengan penggunaan pemicu untuk menjaga agar data tetap sinkron (ini adalah sesuatu yang sering dilakukan untuk kinerja tambahan).