導入 データベースを使用したことがある人なら、機能面での 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 複数の無関係なテーブルクエリデータとページング機能要件主キーと外部キーの関連付けがない ...
テストでは、ページ定義がutf-8でエンコードされている場合、 js ファイルに中国語などのマルチバ...
WeChatアプレットuniappは左スワイプで削除効果を実現成果を達成する1. スワイプしてリス...
Nginx におけるいわゆる接続制限は、実際には TCP 接続、つまり 3 ウェイ ハンドシェイク後...
関連記事:初心者が学ぶ HTML タグ (5)導入された HTML タグは、必ずしも XHTML 仕...
まとめプロジェクトの説明形式<img src="..."> H2+ ...
目次1. ルーティング構成2. Vueページのネスト3. ネストされた関係1. ルーティング構成 定...
セルのパディングは、セルの内容と境界線の間の距離です。基本的な構文<TABLE セルパディング...
目次1. コンテナライフサイクル管理(1)ドッカー実行(2)スタート/ストップ/リスタート(3)ドッ...
MySQL のメンテナンスを容易にするために、エラー情報を収集するためのインターフェースを提供するス...
このプロジェクトでは、Vue+Router+Element の具体的なコードを共有して、シンプルなナ...
Vue+jsはビデオのフェードインとフェードアウトを実現します。参考までに、具体的な内容は次のとおり...
日々の運用・保守作業において、MySQL データベースのバックアップは重要です。ウェブサイトにとって...
この記事では、Docker を使用して Centos6 に Zookeeper をデプロイする方法に...
いつものように、まずは画像効果を投稿しましょう: このエフェクトの原理は非常にシンプルです。CSS3...