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

MATCH AGAINSTとLIKEのどちらのSQLクエリが優れていますか?

    更新

    MySQL 5.6以降 以降、InnoDB テーブルはMatch... Againstをサポートします 。

    1つ目は多くです より良い。 MyISAM テーブルでは、それらの列に対してフルテキストインデックスを使用します。もう1つは、全表スキャンを実行して、すべての行で連結を実行してから、比較を実行します。

    LIKE に対してそれをしている場合にのみ効率的です:

    • 列(特定のデータベースベンダーが機能インデックス(たとえば、Oracle)をサポートしていて、それらを使用している場合を除き、関数の結果ではありません)。
    • 列の先頭(つまり、LIKE 'blah%' LIKE '%blah%'とは対照的に );および
    • インデックスが作成された列。

    これらの条件のいずれかが当てはまらない場合、SQLエンジンがクエリを実行する唯一の方法は、全表スキャンを実行することです。これは、約1万から2万行で使用できます。それを超えると、すぐに使用できなくなります。

    注: MySQLでのMATCHの問題の1つは、単語全体とのみ一致するように見えるため、「bla」を検索しても「blah」の値を持つ列と一致しないが、「bla*」を検索すると一致することです。

    >


    1. mysqli_real_escape_stringは、SQLインジェクションやその他のSQL攻撃を回避するのに十分ですか?

    2. 初心者向けのSQLNotEqual To()演算子

    3. データベースは保護されていますか?もう一度考えて

    4. Oracleでxml要素の値を選択します