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 ベース)

推薦する

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

MySQL/MariaDB でピボット テーブルを実装する方法のサンプル コード

前回の記事では、Oracle でピボット テーブルを実装するいくつかの方法を紹介しました。今日は、同...

CSSは2つの要素をブレンドする効果(スティッキー効果)を実現します。

数年前、Taobaoのモバイル版の左下隅に面白い丸いボタンがあったことを覚えています。それをクリック...

CentOS7 ファイアウォールとオープンポートの簡単な使い方の簡単な紹介

概要(公式にはより詳しい説明があります) Firewalld は、ネットワーク接続またはインターフェ...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...

JDBC を使用して Mysql データベースに接続する際に発生する可能性のある問題の概要

まず、いくつかの概念を明確にします。 JDBC: Javaデータベース接続、Oricalによって規定...

CSS マスクを使用して PNG 画像のサイズを大幅に最適化します (推奨)

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

Vueにおけるキーの役割と原理の詳細な説明

目次1. 結論から始めましょう2. キーの役割2.1 例2.2 上記の例を修正する2.3 例を再度修...

将来人気が出るであろういくつかのナビゲーション方向

<br />今は情報爆発の時代であるだけでなく、サービス爆発の時代でもあります。それはす...

Ubuntu 20.04にvncserverをインストールする方法

Ubuntu 20.04は2020年4月に正式にリリースされました。本日、ミラーシステムを正式にイン...

ウェブサイトのユーザーエクスペリエンスデザイン(UE)

Google Reader で、JunChen が書いた「フロー理論と設計」というタイトルの投稿を見...

C# は MySQL コマンドラインのバックアップとリカバリを実装します

MySQL データベースをバックアップするためのツールは多数あります。過去 2 日間で、C# を使用...

Javascript デザインパターン プロトタイプ モードの詳細

目次1. プロトタイプモード例1例2例3 2. オブザーバーパターン1. プロトタイプモードプロトタ...

Vue命令の動作原理と実装方法

Vue の紹介現在のビッグフロントエンドの時代は、混乱と衝突の時代です。世界は多くの派閥に分かれてお...