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

Aに(aまたはb)が含まれるMySQLクエリの記述方法

    2つのオプション:

    1. LIKEを使用する キーワードと文字列のパーセント記号

      select * from table where field like '%a%' or field like '%b%'.
      

      (注:検索文字列にパーセント記号が含まれている場合は、それらをエスケープする必要があります)

    2. 例で指定したよりも複雑な文字列の組み合わせを探している場合は、正規表現(regex)を使用できます。

      それらの使用方法の詳細については、MySQLのマニュアルを参照してください: http:/ /dev.mysql.com/doc/refman/5.1/en/regexp.html

    これらのうち、LIKEを使用する これは最も一般的なソリューションです。これは標準のSQLであり、一般的に使用されています。正規表現はあまり一般的に使用されていませんが、はるかに強力です。

    どちらのオプションを使用する場合でも、パフォーマンスへの影響の可能性に注意する必要があることに注意してください。このようなサブストリングを検索すると、クエリはテーブル全体をスキャンする必要があります。テーブルが大きい場合、クエリが非常に遅くなる可能性があり、インデックス作成の量は役に立ちません。

    これが問題であり、同じことを何度も検索する必要がある場合は、文字列フィールドに関連するサブが含まれていることを指定するフラグフィールドをテーブルに追加するなどの方法を選択できます。文字列。レコードの更新を挿入するときにこのフラグフィールドを最新の状態に保つと、検索するときにフラグをクエリするだけで済みます。これはインデックスを付けることができ、クエリをはるかに高速にします。それを行う価値があるかどうかはあなた次第ですが、LIKEを使用した場合のパフォーマンスの悪さによって異なります。 。



    1. テーブルから過去3か月のレコードを取得します

    2. Doctrine2および追加フィールドを備えた多対多リンクテーブル

    3. 偽の外部キー制約が失敗する

    4. テーブル式の基礎、パート11 –ビュー、変更に関する考慮事項