sql >> Databáze >  >> RDS >> Mysql

mysql:efektivní způsob pro vyhledávání postfixů (jako '%text' aka. zástupný znak předpony)?

Řešením bude index přes reverzní pole, někteří si myslí:

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

ale MySQL nepovoluje indexování přes výrazy, pouze přes sloupce:

toto je syntaxe vytvoření indexu MySQL :

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

Toto je syntaxe postgres create index :

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

Řešení lze vytvořit indexované druhé pole (pole -> dleif) a mysql spoušť chcete-li zachovat obrácené 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. Jak mohu zabránit vkládání SQL v PHP?

  2. Najděte mezery v datech pomocí mysql

  3. ) Operátor pro začátečníky

  4. Automatizace tabulkového modelu zpracování databází Analysis Services (SSAS) na serveru SQL Server