データベース クエリでは、検索に最適なクエリを選択するというジレンマに直面します。複数の列の特定のキーワードに基づいた行。この質問では、2 つのアプローチを比較します。
このクエリは、全文インデックスを使用して、キーワード「foo」と「bar」を含むドキュメントを検索します。指定された列「foo_desc」および「bar_desc」。 MySQL バージョン 5.6 以降では、InnoDB テーブルで MATCH AGAINST がサポートされています。
このクエリは 2 つの列の値を連結し、LIKE を使用して実行します。結果内の「foo」と「bar」の部分文字列検索string.
MATCH AGAINST は、フルテキスト インデックスを活用してキーワードを効率的に検索することで、MyISAM テーブル上で優れたパフォーマンスを発揮します。対照的に、LIKE はテーブル全体のスキャンを実行し、各行でキーワードを検索します。これは、大規模なデータセットでは時間がかかる可能性があります。
LIKE は、(関数の結果ではなく) 列に直接適用された場合、検索パターンが列の先頭と一致する場合、および列にインデックスが付けられている場合にのみ有効です。それ以外の場合、デフォルトでテーブル全体のスキャンが行われるため、大規模なデータセットでは実用的ではなくなります。
MySQL における MATCH AGAINST の制限の 1 つは、単語全体のみに一致します。したがって、「bla」を検索すると、「blah」を含む列は一致しませんが、「bla*」を検索すると一致します。
パフォーマンスの考慮事項と LIKE の制限に基づいて、大規模なデータセットで複数の列のキーワードを検索する場合は、MATCH AGAINST が推奨される選択肢です。全文インデックス作成の効率を活用して、迅速かつ正確な結果を提供します。
以上がMATCH AGAINST または LIKE: MySQL での複数列のキーワード検索にはどちらが適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。