MySQLのファジークエリの要約

MySQLのファジークエリの要約

1. 一般的な使用法:

(1)%で使用する

% は 1 つ以上の文字のワイルドカードを表します。たとえば、フィールド名が大文字で始まるデータを照会する場合は次のようになります。

(2)一緒に使う

_ は 1 文字だけのワイルドカードを表します。上記のクエリの % を _ に変更すると、次のデータのみが見つかることがわかります。

2. ファジークエリを使用すると、データ量が多い場合にインデックスの失敗やパフォーマンスの問題が発生します。

(1)%または_で始まるあいまい検索を避ける

実行プランを説明すると、ファジークエリを使用する場合、クエリが%と_で始まっていなくてもインデックスは有効であることがわかりました。

クエリが % または _ で始まる場合、インデックスは無効になります。

(2)カバーインデックスの使用

クエリ条件とクエリ結果の両方がインデックス内のフィールドである場合、このインデックスはカバーリングインデックスと呼ばれることがあります。このとき、ファジークエリインデックスのような使用が効果的です。

InnoDBの主キーをインデックスに追加できません

注意:カバーリング インデックスを使用する場合、フィールドの長さは要件によって制限されます。通常、長さを超えるとインデックスは無効になります。

クエリに説明フィールドを含めると、カバーインデックスも失敗します (データベースはテスト済みで、最大長 255 のフィールドのみをサポートしています)

(3)全文索引を利用する

フィールドの全文インデックスを作成し、match(...) against(...)を使用して検索します。

注意: この全文インデックス作成方法は英語の単語にのみ有効で、中国語の文字には適していません。中国語の文字をサポートするには、MySQL 構成ファイルにいくつかの構成変更を加える必要があります。

(4)追加の全文検索エンジンを使用して解決する

Lucene、Solr、Elasticsearch など。

基本的な原則は、MySQL 構成ファイルの ft_min_word_len=3 を 1 に変更することです。 (この項目が利用できない場合は、直接追加してください)、単語分割の結果を保存するための新しいフィールドを作成し、このフィールドのフルテキスト インデックスを作成します。次に、単語分割モジュールを実装して、「everyone is good」という単語を「everyone is good、everyone is good、every family is good」に分割します。次に、like %% の代わりに match .. against を使用します。クエリ結果は基本的に like の結果と同じですが (単語の分割が適切である場合)、効率は like よりも少なくとも 10 倍高くなります。

要約する

これで、MySQL ファジークエリに関するこの記事は終了です。MySQL ファジークエリに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySql のファジークエリワイルドカードの使用に関する詳細な紹介
  • MySQLのファジークエリのような遅い速度を解決する方法
  • MySQL での %% のようなファジークエリの実装
  • MySQL で遅いファジークエリを最適化する方法

<<:  js のマクロタスクとマイクロタスクについての簡単な説明

>>:  Nginx リバース プロキシと負荷分散を実装する方法 (Linux ベース)

推薦する

Linux で Xfce デスクトップ環境を使用すべき 8 つの理由

いくつかの理由(好奇心も含む)から、数週間前に Linux デスクトップとして Xfce を使い始め...

Mysql の主キーと一意キーの違いのまとめ

主キーとは何ですか?主キーは、テーブル内の各タプル (行) を一意に識別するテーブル内の列です。主キ...

CSS モジュールソリューション

CSS のモジュール ソリューションは、JS のモジュール ソリューションと同じくらい多く存在すると...

Vue3ルーティングVueRouter4を使用する簡単な例

ルーティングvue-router4 では API の大部分は変更されていないため、変更点のみに焦点を...

WeChatアプレットの下部にあるタブバーがコンテンツをブロックする問題に対処する簡単な方法

WeChatアプレットでタブバーを設定すると、重要なコンテンツがブロックされ、iPhoneXなどの異...

MySQL バージョン 5.7.24 のデータベース インストール プロセスの詳細なグラフィック説明

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに...

ウェブ標準学習リソースの素晴らしいコレクション

これらの仕様は、下位互換性のあるドキュメントを Web 上で公開し、できるだけ幅広いユーザーがアクセ...

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

MySQLクエリ時にフィールドにデフォルト値を割り当てる方法

必要フィールドをクエリする場合、フィールドに同じ値を指定する必要があります。この値はハードコードする...

CentOS7 に Redis をインストールして設定する方法

導入Redis を詳しく説明する必要はありません。インストールと設定を始めましょう。インストールソー...

MySQL 5.7.17 winx64 のインストールと設定のチュートリアル

今日、MySQL データベースをコンピューターに再度インストールしました。システムを再インストールす...

React サーバーサイドレンダリング原則の分析と実践

ほとんどの人は、サーバーサイド レンダリング (SSR と呼んでいます) の概念について聞いたことが...

Navicat がデータベース データ構造をインポートする際に発生するエラー datetime(0) の SQL レポートの問題を解決します。

エラー発生: MySQL 5.7 から SQL にデータベースをエクスポートし、それを MySQL ...

dockerでマウントされたディレクトリが読み書きできない問題を解決する

次のコマンドを使用してコンテナを作成し、ローカルの /home/dock/Downloads ディレ...

MySQLのGROUP BYステートメントを最適化する方法

MySQL で、id、a、b の 3 つのフィールドを持つ新しいテーブルを作成します。次のように、同...