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

正規表現とmysql:AND演算子はありますか

    高度な検索機能が必要な場合は、全文検索ソリューションを使用してください。

    MySQLでは、組み込みの全文検索インデックス この機能は、MyISAMストレージエンジンでのみ機能します。 InnoDBはすべてのMySQLテーブルに適したストレージエンジンであるため、これは残念なことです。最近のバージョンのMySQLのInnoDBは、ほとんどの場合MyISAMよりも高速であり、MyISAMよりも優れたクラッシュリカバリ機能を備えています。

    MySQL開発チームから、InnoDBのフルテキストインデックスを実装する予定であるという声明がありました。しかし、これが利用可能になるまでには何ヶ月も、あるいは何年もかかります。確かに、MySQLの新しいバージョンにアップグレードする必要があります。

    MyISAMフルテキストインデックスを使用する必要がある場合は、データを主にInnoDBに保存してから、検索可能なテキストのコピーをMyISAMテーブルに保存することをお勧めします。

    SphinxSearch などの外部ソリューションを使用することもできます。 または Apache Solr データベースの外部に全文検索機能を提供します。 MySQLプラガブルストレージエンジンインターフェイスを介したSphinxSearchインデックス を使用する方法もあります。 。

    LIKEを使うのは好きではありません ワイルドカードまたはREGEXP フルテキスト検索用。これらのソリューションでは、検索ごとに全表スキャンが発生し、データの量に応じて、インデックスがある場合よりも実行速度が数百倍または数千倍遅くなります。

    MySQLの全文検索ソリューションの比較をプレゼンテーションで書きました。「MySQLでの実用的な全文検索 、」および私の本の章 SQL Antipatterns:データベースプログラミングの落とし穴の回避

    更新:MySQL 5.6は現在開発中であり(2012年2月現在)、InnoDBのフルテキストインデックスソリューションを実装しています。



    1. TSQLを使用してデータベース内のすべてのテーブルのリストを取得するにはどうすればよいですか?

    2. MySQLまたはMariaDBデータベースをAWSおよびGoogleCloudで高可用性にする方法

    3. アンダースコア付きのMySQLLIKEクエリ

    4. Oracle 12cでPBKDF2を使用するにはどうすればよいですか?