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

代替のMySQL全文検索構文

    残念ながら、MySQLSELECTドキュメント によると 、「HAVING句は、アイテムがクライアントに送信される直前に、最適化なしでほぼ​​最後に適用されます。」

    違いは、最初のクエリがフルテキストインデックスを使用して、関連性をのみ計算することです。 nameに「Bob」が含まれる行の場合 。 2番目のクエリは、すべての関連性を計算します 行、次にそれらのほとんどを破棄します(おそらくテーブル全体をソートした後)。したがって、2番目のクエリは大幅に遅くなります。最初のクエリにORDERBY句を配置した場合でも、HAVINGを使用するよりも高速です:

    SELECT name, MATCH(name) AGAINST('Bob') AS relevance
    FROM users
    WHERE MATCH(name) AGAINST('Bob')
    ORDER BY relevance DESC
    

    一般に、「WHERE句に含める必要のあるアイテムにはHAVINGを使用しないでください。」




    1. MySQLは複数の値に等しい場所を選択します

    2. SQL結合2テーブル

    3. MariaDBサーバー10.3での自動データバージョン管理

    4. Moqを使用してMySQLデータベースに挿入クエリをモックする