MySqlを最適化するためにnot inを使用する方法

MySqlを最適化するためにnot inを使用する方法

最近、プロジェクトで選択クエリを使用する際に、未使用の主キー ID を除外するために not in を使用しました。当初使用した SQL は次のとおりでした。

選択 
  s.SORT_ID、
  s.SORT_NAME、
  s.SORT_STATUS、
  s.SORT_LOGO_URL、
  s.SORT_LOGO_URL_LIGHT
SYS_SORT_PROMOTE から
  どこ
    s.SORT_NAME = '必聴クラシック'
    かつ、s.SORT_ID が ("SORTID001") にありません
  制限 1;

テーブルに大量のデータがある場合、この SQL の実行時間は長く、実行効率は低くなります。左結合を使用して最適化できるという情報をオンラインで見つけました。最適化された SQL は次のとおりです。

選択 
  s.SORT_ID、
  s.SORT_NAME、
  s.SORT_STATUS、
  s.SORT_LOGO_URL、
  s.SORT_LOGO_URL_LIGHT
SYS_SORT_PROMOTE から
左結合(SYS_SORT_PROMOTEからSORT_IDを選択、SORT_ID=#{sortId})b
s.SORT_ID = b.SORT_IDの場合
  どこ
    b.SORT_IDがNULLです
    AND s.SORT_NAME = '必聴クラシック'
  制限 1;

上記の SORT_ID=#{sortId} では、sortId は SORT_ID フィールドで除外する必要がある ID 値を渡します。左外部結合を実行する場合、フィルターするフィールド (SORT_ID) が結合条件として使用されます。最後に、where 条件に b.SORT_ID IS NULL を追加して、テーブル内の関連データをフィルターします。

最適化のプロセスを記録するには、ここにエッセイを書き留めてください。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • MYSQL IN と EXISTS の最適化の例
  • MySQL の not in と minus の最適化
  • MySQL における or、in、union、インデックス最適化の詳細な分析
  • サブクエリ最適化における MySQL 選択の実装
  • MySQL での IN データボリュームの使用の最適化された記録

<<:  VueRouterルーティングの詳細な説明

>>:  Ubuntu 20.04 に Python 3 仮想環境をインストールする詳細なチュートリアル

推薦する

Jmeterはデータベースプロセスダイアグラムに接続します

1. MySQL jdbc ドライバー (mysql-connector-java-5.1.28.j...

シンプルな時計を実装するJavaScript

この記事では、JavaScriptでシンプルな時計を実装するための具体的なコードを参考までに紹介しま...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

CSS属性のデフォルト値width: autoとwidth: 100%の違いの詳細な説明

幅: 自動子要素(コンテンツ+パディング+境界線+余白を含む)は、親要素のコンテンツ領域全体を埋めま...

Ubuntu16.04にclionをインストールするプロセス全体と手順の詳細な説明

CLion のプロセス全体を最初から説明します。CLion は、JetBrains がリリースした新...

WIN10 システムと Docker 内部コンテナ IP 間の通信方法

1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...

C++ を使用して MySQL に接続する方法

C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...

HTML の rel 属性の分析

.y { background: url(//img.jbzj.com/images/o_y.pn...

Centos7 MySQL データベースのインストールと設定のチュートリアル

1. システム環境yum updateアップグレード後のシステムバージョンは[root@yl-web...

Mysql5.6.36 スクリプトのコンパイル、インストール、初期化のチュートリアル

概要この記事は、centos7.3 上で mysql5.3.6 を自動的にコンパイルしてインストール...

Vueモバイル端末は画面上で指をスライドさせる方向を判定する

vueモバイル端末は、画面上で指をスライドさせる方向を判断します。具体的な内容は次のとおりです。これ...

HTML ではスペースはどのように表現されますか (どのような意味ですか)?

Web 開発では、次のような文字によく遭遇します: &nbsp;これは実際には HTML が...

HTML フォームを送信するいくつかの方法_PowerNode Java Academy

方法1: 送信ボタンから送信する <!DOCTYPE html> <html>...

CSSで背景ぼかしを設定する方法

ページを作成するときに、ページの見栄えを良くするために、背景画像を設定する必要があることがよくありま...

ESXI の仮想マシンにワークステーションをインストールするときに発生するネットワーク障害の解決策

問題の説明ESXI で Windows にワークステーションをインストールした後、内部の仮想マシンは...