Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

mysql:cách hiệu quả để tìm kiếm hậu tố (như '% text' hay còn gọi là ký tự đại diện tiền tố)?

Một chỉ mục trên trường đảo ngược sẽ là giải pháp, một số nghĩ như:

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

nhưng MySQL không thay đổi chỉ mục trên các biểu thức, chỉ trên các cột:

đây là Cú pháp tạo chỉ mục của MySQL :

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

Đây là cú pháp tạo chỉ mục của postgres :

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

A làm việc xung quanh có thể được tạo trường thứ hai được lập chỉ mục (trường -> dleif) và một mysql kích hoạt để giữ trường đã đảo ngược:

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. Làm cách nào để xóa bộ nhớ trong khi chạy một tập lệnh PHP dài? đã thử unset ()

  2. Chuyển đổi dấu thời gian Unix thành ngày có thể đọc được của con người bằng MySQL

  3. Làm việc với MyISAM trong MySQL

  4. Lỗi SQL tôi không thể tìm ra điều này

  5. TIMEDIFF () so với SUBTIME () trong MySQL:Sự khác biệt là gì?