Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysql:skuteczny sposób na wyszukiwanie postfiksowe (jak '%text' aka. symbol wieloznaczny prefiksu)?

Rozwiązaniem będzie indeks nad polem odwróconym, niektórzy myślą tak:

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

ale MySQL nie zezwala na indeksowanie na wyrażeniach, tylko na kolumnach:

to jest Składnia tworzenia indeksu MySQL :

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

To jest składnia indeksu tworzenia postgres :

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

obejście można utworzyć indeksowane drugie pole (pole -> dleif) i mysql wyzwalacz aby zachować odwrócone pole:

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. Wzorzec repozytorium bez LINQ lub innego ORM?

  2. MySQL otrzymuje ciąg(i) między dwoma # / wieloma parami #

  3. PHP:wiele zapytań SQL w jednej instrukcji mysql_query

  4. Ostrzeżenie:mysqli_connect():(HY000/1045):Odmowa dostępu dla użytkownika 'root'@'localhost' (przy użyciu hasła:NIE)

  5. Jak usunąć wiersze z trzech tabel - błąd zapytania