Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah mungkin untuk memiliki indeks berbasis fungsi di MySQL?

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).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cari semua kolom tabel menggunakan kondisi satu tempat dengan kata kunci tunggal di mysql

  2. Ubah cap waktu Unix menjadi tanggal yang dapat dibaca manusia menggunakan MySQL

  3. Kesalahan acara MySQL menggunakan php

  4. Injeksi SQL di ADOdb dan keamanan situs web umum

  5. Bagaimana cara mengubah baris tabel mysql menjadi kolom