データベースクエリの最適化: サブクエリの最適化

データベースクエリの最適化: サブクエリの最適化

1. 事例

会社のトップ以外の従業員全員を年齢別にグループ化します。

t_emp で id が存在しない場合に、年齢を「年齢」として選択し、count(*) を「人数」として選択します。 
(ceo が null でない t_dept から ceo を選択) 年齢でグループ化します。 

最適化するにはどうすればいいですか?

①deptテーブルのフルテーブルスキャンを解決し、ceoフィールドのインデックスを作成します。

この時点で、再度クエリを実行します。

② さらに最適化し、置き換えない。

上記の SQL は次のように置き換えることができます。

select age as '年齢',count(*) as '人数' from emp e left join dept d on e.id=d.ceo where d.id is null group by age; 

結論: 範囲を判断するときは、not in や not exists を使用せず、代わりに xxx is null の左結合を使用してください。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQLデータベースクエリの最適化MySQLの効率
  • 大規模データベースのクエリ最適化とページングアルゴリズム
  • データベースクエリの最適化(マスタースレーブテーブル設計)
  • MySQLデータベースでのクエリステートメントの最適化の詳細な説明
  • 大規模データベース向けのクエリ最適化およびページング アルゴリズムのコレクション 1/2
  • 大規模データベース向けのクエリ最適化およびページング アルゴリズムのコレクション 2/2
  • データベースクエリタイムアウト最適化問題の実践記録

<<:  ファイアウォールの iptables 戦略を使用して Linux サーバー上のポートを転送する方法

>>:  ReactでuseStateを使用する詳細な例

推薦する

Centos6.5 glibc アップグレードプロセスの紹介

目次シナリオ要件glibc バージョンglibcのインストールglibc ソフトリンクシナリオ要件C...

JavaScriptでフロアナビゲーションエフェクトを作成するプロセスの詳細な説明

目次この期間の目標1. 関数の実装1.1 構造層1.2 スタイルレイヤー1.3 行動層1.3.1 フ...

MySQL でスロークエリログ機能を有効にする方法

MySQL スロー クエリ ログは、問題のあるクエリを追跡するのに非常に役立ちます。現在のプログラム...

MySQLトランザクションを実行するための構文とプロセスの詳細な説明

概要: MySQL は、トランザクションをサポートするためにさまざまなストレージ エンジンを提供しま...

Vue の this.$router と this.$route の違いと push() メソッド

公式文書には次のように記されている。ルーターを挿入することで、どのコンポーネントでも this.$r...

vue3.0 でカルーセル コンポーネントをカプセル化する手順

目次1: カプセル化の考え方2. 包装工程3: ドットインジケーター4: 左と右のインジケーター5:...

axiosのシンプルなカプセル化と使用例コード

序文最近、プロジェクトを構築しているときに、リクエストのカプセル化について考え、どのようにカプセル化...

MySQLのデッドロックとログに関する詳細な説明

最近、MySQL オンラインでいくつかのデータ異常が発生しましたが、すべて早朝に発生しました。ビジネ...

ウェブサイトに天気予報を挿入する方法

天気予報をウェブサイトに挿入すると、次のような効果が得られます。次のコードを挿入する必要があります:...

Vue2 における 12 種類のコンポーネント通信

目次1. 小道具2..同期3.vモデル4.参照5. $emit/v-on 6. $attrs/$li...

CSS ボックスの折りたたみに対する 5 つの解決策

まず、ボックスコラプスとは何でしょうか?親ボックスの内側にあるべき要素が外側にあります。第二に、箱は...

MySQL 8.0 のインデックス スキップ スキャン

序文MySQL 8.0.13 では、インデックス スキップ スキャン (インデックス ジャンプ スキ...

Linux システム (Centos6.5 以上) のインストール JDK チュートリアル分析

記事の構成1. 準備2. Java JDK8.0をインストールする3. 環境変数を設定する3. イン...

MySQL GTID マスターとスレーブの不一致を修復するソリューション

目次解決策1: レプリカを再構築する前提条件アドバンテージ欠点手順マスター奴隷解決策2: データ修復...

JavaScript 関数をよりエレガントにする方法

目次分割代入を使用したオブジェクトパラメータコールバック関数の命名条件文を説明的にするスイッチ文をM...