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

mysql:cara efisien untuk pencarian postfix (seperti '%text' alias awalan wildcard)?

Indeks di atas bidang terbalik akan menjadi solusinya, beberapa orang berpikir seperti:

create index idx_reverse on table ( reverse( field ) );
select * from table where reverse(field) like 'txet%';

tetapi MySQL tidak mengizinkan indeks di atas ekspresi, hanya di atas kolom:

ini MySQL create index syntax :

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name
    [index_type]
    ON tbl_name (index_col_name,...)
    [index_option] ...

Ini sintaksis indeks postgres create :

CREATE [ UNIQUE ] INDEX [ CONCURRENTLY ] name ON table [ USING method ]
    ( { column | ( expression ) } [ opclass ] [, ...] )
    ...

Sebuah menyelesaikan dapat membuat bidang kedua yang diindeks (bidang -> dleif) dan mysql pemicu untuk menjaga bidang terbalik:

alter table my_table add column dleif ...;
create index idx_reverse on my_table ( dleif );
Create Trigger `reverse_field` Before Update on `my_table` for each row BEGIN
    set new.dleif = reverse( new.field );
END;
select * from table where dleif like reverse('%text');


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zsh:perintah tidak ditemukan:mysql

  2. Cara terhubung ke MySQL menggunakan Node.js

  3. Permintaan MySQL:Menggunakan UNION dan mendapatkan nomor baris sebagai bagian dari SELECT

  4. Jatuhkan database MySQL yang cocok dengan beberapa wildcard?

  5. Menulis ulang mysql pilih untuk mengurangi waktu dan menulis tmp ke disk