sql >> データベース >  >> RDS >> Mysql

mysql:postfix-searchの効率的な方法('%text'別名プレフィックスワイルドカードなど)?

    リバースフィールドのインデックスが解決策になります。次のように考える人もいます。

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

    ただし、MySQLは式に対してインデックスを作成せず、列に対してのみインデックスを作成します:

    これは MySQLCreateindex構文 です。 :

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

    これは、 postgrescreateindex構文 です。 :

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

    回避策 インデックス付きの2番目のフィールド(フィールド-> dleif)とmysqlを作成できます。トリガー 反転フィールドを維持するには:

    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. MariaDBに存在する場合のドロップテーブル

    2. SQLクエリで正規表現(置換)を実行する

    3. AccessでSQLServerを使用する必要があるのはいつですか。 (ヒント:ほとんどの場合)

    4. mysql-特定のホストが提供したconnect_errorsの数を照会できますか?