導入 データベースを使用したことがある人なら、機能面での 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
目次MySQL ベースの検索エンジンの実装1. ngram全文パーサー2. 全文インデックスを作成す...
ウェブサーバー1. Webサーバーは、wev、cgi、asp機能を無効にするなど、不要なIISコンポ...
Apache では構成ファイルで Web ページまたは Web サイトの書き換えを簡単に設定できる...
目次1. SQL最適化の一般的な手順1. SQL実行計画の分析を説明する2. プロフィール分析を表示...
序文最近、偶然 MySQL の coalesce を発見しました。ちょうど時間があったので、MySQ...
基本的な概念: Macvlanの動作原理: Macvlan は、Linux カーネルでサポートされて...
ポーテナーの紹介Portainer は、ステータス表示パネル、アプリケーション テンプレートの迅速な...
<br />ポテトチップスパーティーのこのエピソードに参加して、何人かの友達に会えてとて...
暗い背景スタイルのページ デザインは非常に人気があり、シックでエレガント、そして非常にクリエイティブ...
Unix ライクなシステムでは、コマンドまたはプロセスの実行がいつ開始されたか、またプロセスがどのく...
目次マスターの後ろの秒数オリジナルの実装最終マスタータイムスタンプマスターとのクロック差他の実行時間...
最近、Web 開発のフロントエンドとバックエンドの技術を学んだので、その後の管理を容易にするためにプ...
1. SELECT句を使用して複数のテーブルをクエリするSELECT フィールド名 FROM tab...
遅いログクエリ機能スロー ログ クエリの主な機能は、設定された時間しきい値を超える SQL ステート...
FileZilla Serverをサーバーにインストールすると、425データ接続を開けない問題が発生...