導入 データベースを使用したことがある人なら、機能面での 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 をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
成果を達成する 実装コードhtml <div class="wrapper"...
不明な点があるときはいつでも、Blog Park にアクセスして、いつでも答えやインスピレーションを...
ユーザーから情報を収集する場合、Web フォームを使用するより簡単で直接的な方法はありません。適切に...
解決策はただ一つ、ソースを変更することです。 github からのソースは基本的にタイムアウトするの...
数日前、ある要件に取り組んでいたとき、MySQL で重複レコードをクリーンアップする必要がありました...
目次日時タイムスタンプ選び方ミリ秒の時間を保存する方法結論MySQL は、日付と時刻を処理するために...
目次序文1. Dockerをインストールする2. ElasticSearchをインストールする3. ...
目次序文コンストラクタ、プロトタイプオブジェクト、インスタンスオブジェクトの関係プロトタイプチェーン...
新しい質問急いで来て、急いで行ってください。 「垂直グリッドとプログレッシブ行間隔 (パート 1)」...
これで、autocomplete と呼ばれる input の属性を使用できるようになりました。オート...
この記事では、Ubuntu18.04にmysql5.7.23をインストールする具体的な方法を参考まで...
目次質問: 1. 最初の試み2. 合理的な分析3. 問題解決(1) pthread_join()の使...
この記事の例では、ログイン機能を実現するためのvue+springbootの具体的なコードを参考まで...
Autotrash は、古い削除済みファイルを消去するプロセスを自動化するコマンド ライン プログラ...
推奨される Docker 学習教材: https://www.runoob.com/docker/d...