前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ステートメントに関するもう 1 つの知識、つまりユーザー変数のコード解析について説明します。 コードから始めましょう `notice`.`id`、`notice`.`fid`、`notice`.`has_read`、`notice`.`notice_time`、`notice`.`read_time`、`f`.`fnum`、`f`.`forg`、`f`.`fdst`、`f`.`actual_parking` を `parking`、`f`.`scheduled_deptime`、`f`.`estimated_deptime`、`f`.`actual_deptime`、`f`.`scheduled_arrtime`、`f`.`estimated_arrtime`、`f`.`actual_arrtime`、`f`.`is_vip`、`f`.`aoc_notice` として選択します。 から ( 選択 t.id、 t.fid、 t.has_read、 t.通知時間、 t.読み取り時間 から ( 選択 援助、 a.fid、 a.has_read、 通知時間、 a.読み取り時間、 @v_rownum := @v_rownum+1、 if(@v_fid=a.fid,@v_rowid:=@v_rowid+1,@v_rowid:=1 ) を row_count として、 @v_fid:=a.fid から ( 選択 id、 フィド、 読んだ、 通知時間、 読み取り時間 vkm_user_notice_flight より ここで、`notice_type` = 'process_update'、uid=82 fid、notice_time 降順で並び替え )a、 ( @v_rownum:=0、@v_rowid:=0、@v_fid:=null を選択 )b ) ここで、t.row_count = 1 ) `通知`として `vkm_flight` を `f` として `notice`.`fid` = `f`.`id` に左結合します。 `vkm_parking` を `parking` として `f`.`actual_parking` = `parking`.`parking_num` に左結合します 友人が仕事中にこのような SQL ステートメントを送ってきたのですが、最初は混乱してまったく理解できませんでした。私は MySQL にあまり精通していないので、簡単な追加、削除、変更しかできません。実際、上記のコードは非常に直接的に書かれています。 `notice`.`id`、`notice`.`fid`、`notice`.`has_read`、`notice`.`notice_time`、`notice`.`read_time`、`f`.`fnum`、`f`.`forg`、`f`.`fdst`、`f`.`actual_parking` を `parking`、`f`.`scheduled_deptime`、`f`.`estimated_deptime`、`f`.`actual_deptime`、`f`.`scheduled_arrtime`、`f`.`estimated_arrtime`、`f`.`actual_arrtime`、`f`.`is_vip`、`f`.`aoc_notice` として選択します。 `notice` から `vkm_flight` を `f` として `notice`.`fid` = `f`.`id` に `vkm_parking` を `parking` として `f`.`actual_parking` = `parking`.`parking_num` に LEFT JOIN します。 しかし、上記のコードのクエリ効率は本当に異なります。上記の具体的なコードが理解できず、指導を求めていますが、Baiduで検索したところ、1つはmysqlでのifの使用であり、もう1つはmysqlでのユーザー変数の使用であることがわかりました。 ユーザー名は、set var value または上記の形式 @var:=val; で設定できます。 mysql での if の使用 if(exp1,exp2,exp3) if では、exp1 が true の場合は exp2 を実行し、それ以外の場合は exp3 を実行します。 上記のコードを見ると、はるかに簡単にわかるかもしれません。上記のコードに基づいて、簡単なアプリケーションの例をもう一度書きました vkm_flight から id、fnum、forg、fdst、@v_rownum:=@v_rownum+1 を選択、(@v_rownum:=0 を選択) b これは@v_rownumの値を返します 要約する 以上が、MySQL クエリ ステートメント内のユーザー変数のコード分析に関するこの記事の内容のすべてです。皆様のお役に立てれば幸いです。興味のある方は、引き続きこのサイトを参照してください: MySQL での or ステートメントの使用例、MySQL データ型 DECIMAL(N,M) の N と M の意味の詳細な説明など。質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信します。このサイトをサポートしてくれた友人たちに感謝します! 以下もご興味があるかもしれません:
|
<<: VMware Workstation 12 Pro Linux インストール チュートリアル
>>: VUE+Canvasは、インゴットを受け取る富の神のゲームを実装します
以前のブログのログインページを作成していたときに、この問題に遭遇しました。突然、透明な背景画像と不透...
vue コンポーネントのスタイル タグ内には、背景画像を使用する次の CSS コードがあります。 背...
目次はじめるデータストレージサーバーを構成するRedis セキュリティの管理Redisインストールの...
目次1. 目的2. 環境整備1. 基本情報2. データベース環境の準備3. データベースを構築し、サ...
目次概要1. 簡単な例1.サブコンポーネントの<ng-content>ディレクティブを使...
圧縮パッケージを解凍して Windows に MySQL をインストールしました。インストール方法は...
1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...
これは、よく使われるけれども忘れられがちな CSS 実装方法のコレクションです。抜けや追加があれば、...
復帰文字 ( Ctrl+M ) に不安を感じても心配しないでください。それらを排除する簡単な方法がい...
目次遅延読み込みCSS スタイル: HTML部分:スクリプト部分:要約する遅延読み込み名前の通り、私...
RedisはRedisバージョン5のapline(Alps)イメージを使用します。これは小さくて高速...
CSS を使用して、左側に固定幅、右側に適応幅を持つ 2 列レイアウトを実装する 7 つの方法。コー...
一部の Web ページは大きく見えなくても開くのに非常に時間がかかる場合があります。一方、他の We...
input と img を同じ行に配置すると、img タグが常に input より 1 つ上になり、...
Tomcatの設定まずTomcatをインストールするTomcatのインストールは、Tomcatのイン...