導入 データベースを使用したことがある人なら、機能面での like 記号と = 記号の類似点と相違点をご存知でしょう。ここで簡単にまとめてみましょう。 1. 相違点: Like はあいまい検索に使用できますが、'=' はこの機能をサポートしていません。次の例のように、フィールド ID の最初の文字が 1 である情報テーブルのデータをクエリします。 ID が '1%' のような情報から * を選択します。 2. 類似性: 正確な検索には、「like」と「=」の両方を使用できます。 たとえば、次の例はすべて、フィールド ID が '12345' に等しい info テーブルの結果をクエリします。 IDが '12345' のような情報から * を選択します。 上記は、返される結果における like と '=' の類似点と相違点です。すると、好奇心旺盛な友人たちは、処刑のプロセスはどうなっているのかと尋ねるかもしれません。 MySQL の実行プロセスは、like または '=' に遭遇しても同じですか? そうです、物事は見た目だけで判断してはいけません。よく調べてみると、「いいね」と「=」はそれほど単純ではないことがわかります。以下では、この2つの違いを詳しく分析します~~~ 文章 まず、MySQL の explain キーワードを紹介します。explain は実行プランを意味します。つまり、このコマンドを使用してこの SQL がどのように実行されるかを確認します。 説明 select * from info where id like '12345'; 次に、explain を使用して like および = の下にあるクエリをテストします。まず、インデックス付きフィールドをテストします。 説明選択 * から crms_顧客 どこ id = '7cf79d7c8a3a4f94b5373b3ec392e32d'; ここで、「=」を「like」に置き換えて試してみましょう。 説明選択 * から crms_顧客 どこ id は '7cf79d7c8a3a4f94b5373b3ec392e32d' のようになります。 比較すると、返された 2 つの結果の type フィールドと Extra フィールドのデータが異なっていることがわかります。なぜ異なるのでしょうか。また、どのような意味があるのでしょうか。 タイプフィールド タイプ フィールドはオプションの値であり、値は次のように最低パフォーマンスから最高パフォーマンスの順に並べ替えられます。
表からわかるように、const は定数検索、RANGE はインデックス列の範囲検索なので、パフォーマンスが明確に反映されています。 では、like クエリを使用する場合、Extra フィールドは何を表すのでしょうか?追加フィールドの「どこを使用する」とはどういう意味ですか? 追加フィールド 1. Extra フィールドも Explain 出力の非常に重要な列であり、MySQL クエリ オプティマイザのクエリ実行プロセス中のクエリ プランの重要な補足情報を表します。 2. Extra フィールドで where を使用すると、ストレージ エンジンが行を取得した後に MySQL サーバーがフィルタリングすることになります。したがって、「=」を使用する場合と比較して、検索プロセスに 1 つのステップが追加されます。 明らかに、上記の要約から、条件付きクエリにインデックス フィールドを使用する場合、 '=' のパフォーマンスは like よりも高速であると結論付けることができます。 これで終わりだと思いますか? しかし、 インデックス以外のフィールドについてはどうなのかと尋ねる友人もいるかもしれません。 はい、インデックスされていないフィールドのテストを続けましょう。 説明選択 * から crms_顧客 どこ customer_name = '張飛'; ----------------------------------- 説明選択 * から crms_顧客 どこ customer_name LIKE '張飞'; 「=」を除いて同じ 2 つのステートメントを実行してみましょう。 のように: 非インデックスフィールドの場合は、like と "=" は同じであり、パフォーマンスに違いがないことがわかります。 (もちろん、explain には他にもたくさんのフィールドがあり、後ほど一つずつ説明していきます。) 結論は 絶え間ない努力の結果、like と "=" を非インデックス フィールドを使用してクエリした場合、パフォーマンスは同じであるという結論を導き出すことができます。インデックス フィールドを使用する場合、"=" はインデックスに直接ヒットし、一度だけ読み取られますが、like は範囲クエリを必要とするため、"=" の方が like よりもパフォーマンスが優れています。 ~~~~ これで、MySQL の like and = パフォーマンスの最適化に関するこの記事は終了です。MySQL の like and = パフォーマンスに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
一般的な Dockerfile 命令の紹介命令説明するから新しいイメージが構築される基となるイメージ...
この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...
目次序文コンポーネントの紹介クラスコンポーネントの作成状態についてレンダリングについて関数コンポーネ...
この記事では、MySQL ユーザー管理操作について説明します。ご参考までに、詳細は以下の通りです。こ...
目次1. この Web サイトには SQL インジェクションの脆弱性がある可能性があることが判明しま...
目次1. イベントのリスニング2. イベントパラメータを渡す3. イベント修飾子ケース1: クリック...
インストール環境: CentOS7 64ビットMINI版公式ソースコードのコンパイルおよびインストー...
インターネットは絶えず進化する有機体です。長期にわたってインターネットの発展に適応できるページを構築...
2 日前、Raspberry Pi サーバーを Ubuntu 20 にアップグレードしました。今日...
ユーザー名前空間は Linux 3.8 で追加された新しい名前空間で、ユーザー ID やグループ I...
目次1. Webshellを書く出力ファイルにシェルを書き込むログファイル書き込みシェル2. U...
3 つの方法を使用する簡単な例は次のとおりです。インラインスタイル: <!doctypehtm...
この記事では、カスタムツリーコンポーネントを再帰的に実装するVueの具体的なコードを参考までに共有し...
今日、プロジェクトのホームページにアクセスするために Tomcat を設定していたところ、404 エ...
1. 親コンテナーをテーブルに設定し、子をインライン要素に設定します。テキストを表示するサブコンテン...