更新
MySQL 5.6
以降 以降、InnoDB
テーブルはMatch... Against
をサポートします 。
1つ目は多くです より良い。 MyISAM テーブルでは、それらの列に対してフルテキストインデックスを使用します。もう1つは、全表スキャンを実行して、すべての行で連結を実行してから、比較を実行します。
LIKE
に対してそれをしている場合にのみ効率的です:
- 列(特定のデータベースベンダーが機能インデックス(たとえば、Oracle)をサポートしていて、それらを使用している場合を除き、関数の結果ではありません)。
- 列の先頭(つまり、
LIKE 'blah%'
LIKE '%blah%'
とは対照的に );および - インデックスが作成された列。
これらの条件のいずれかが当てはまらない場合、SQLエンジンがクエリを実行する唯一の方法は、全表スキャンを実行することです。これは、約1万から2万行で使用できます。それを超えると、すぐに使用できなくなります。
注: MySQLでのMATCHの問題の1つは、単語全体とのみ一致するように見えるため、「bla」を検索しても「blah」の値を持つ列と一致しないが、「bla*」を検索すると一致することです。
>