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

'*abc'のようなプレフィックスワイルドカードをmatch-againstで使用する方法

    一致は開始ワイルドカードでは機能しないため、*abc*との一致 動作しません。 LIKEを使用する必要があります これを達成するには:

    SELECT * FROM user WHERE user_login LIKE '%abc';
    

    ただし、これは非常に遅くなります。

    文字列の終わりを本当に一致させる必要があり、パフォーマンスがあなたを殺している間にこれを頻繁に行う必要がある場合、解決策は、文字列を逆にする別の列を作成することです。>>

    user_login user_login_rev
    xyzabc     cbazyx
    

    次に、'%abc'を探す代わりに 、'cba%'を探すことができます これは、列にインデックスが付けられている場合ははるかに高速です。また、'cba*'を検索する場合は、MATCHを再度使用できます。 。検索文字列も逆にする必要があります。



    1. JSONフィールドへの更新はDBに保持されません

    2. メモリ内でのみPostgreSQLを実行する

    3. Hiveクエリ言語の主キーとインデックスは可能かどうか?

    4. PHPでパスワードハッシュを復号化するにはどうすればよいですか?