データベースSQL文の最適化

データベースSQL文の最適化

最適化する理由:

実際のプロジェクトが開始され、データベースが一定期間稼働した後、初期のデータベース設定は実際のデータベースのパフォーマンスと若干異なることがあります。この時点で、最適化の調整を行う必要があります。

データベースの最適化のトピックは比較的広範囲にわたり、次の 4 つのカテゴリに分類できます。

  • 》ホストパフォーマンス
  • 》メモリ使用量パフォーマンス
  • 》ネットワーク伝送性能
  • 》SQL文実行パフォーマンス [ソフトウェアエンジニア]

次に、データベース SQL 最適化ソリューションをいくつか示します。

(01)最も効率的なテーブル名の順序を選択する(筆記試験でよく聞かれる)

データベース パーサーは、FROM 句のテーブル名を右から左に処理します。FROM 句の最後のテーブルが最初に処理されます。FROM 句に複数のテーブルが含まれている場合は、レコード数が最も少ないテーブルを選択して最後に配置する必要があります。クエリに 3 つ以上のテーブルがある場合は、他のテーブルによって参照されるテーブルを選択して最後に配置する必要があります。

例: 従業員番号、名前、給与、給与等級、部署名を照会する

emp.empno、emp.ename、emp.sal、salgrade.grade、dept.dname を選択
salgrade、dept、emp から
ここで、(emp.deptno = dept.deptno) かつ (emp.sal は salgrade.losal と salgrade.hisal の間)

1) 3 つのテーブルがまったく関連していない場合は、レコード数と列名が最も少ないテーブルを最後に記述します。

2) 3 つの表が関連している場合は、参照が最も多い表を最後に配置します。

(02) WHERE句の結合順序(筆記試験でよく出題される)

データベースは、WHERE 句を右から左に解析します。この原則に従って、テーブル間の接続は他の WHERE 条件の左側に記述する必要があり、最大数のレコードをフィルターできる条件は WHERE 句の右側に記述する必要があります。

例: 従業員番号、名前、給与、部署名を照会する

emp.empno、emp.ename、emp.sal、dept.dname を選択
emp、deptから
ここで (emp.deptno = dept.deptno) かつ (emp.sal > 1500)

(03) SELECT句でアスタリスク(*)を使用しない

解析プロセス中に、データベースは * をすべての列名に順番に変換します。この作業はデータ ディクショナリをクエリすることによって行われるため、時間がかかります。

emp から empno、ename を選択します。

(04) DELETEの代わりにTRUNCATEを使用する

(05)できるだけCOMMITを使う

COMMITはロールバックポイントを解放するため

(06)HAVING句をWHERE句に置き換える

WHEREが最初に実行され、HAVINGが後で実行されます

(07)SQLの効率を上げるために内部関数をより頻繁に使用する

(08) テーブルエイリアスの使用

salgrade s

(09) 列エイリアスの使用

ename e

つまり、データベースの最適化は1日で終わるものではなく、長期にわたる実践の中で繰り返しテストとまとめを行う必要があります。学生の皆さんには、今後、それをしっかりと理解してもらいたいと思います。

要約する

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

以下もご興味があるかもしれません:
  • mysql+mycat、負荷分散、マスタースレーブレプリケーション、読み取り/書き込み分離操作に基づく安定した高可用性クラスタを構築します。
  • Windows環境でのmycatのインストールと起動
  • mycat を使用して MySQL データベースの読み取りと書き込みの分離を実装する例
  • MyBatisはMyCatを使用してマルチテナントを実現します
  • mysql mycat ミドルウェアのインストールと使用
  • データベースクエリの最適化: サブクエリの最適化
  • データベースの4つの分離レベル
  • MySQL データベースに基づくデータ制約の例と 5 つの整合性制約の紹介
  • Mysqlデータベースの文字化けに対処する方法
  • データベースミドルウェアMyCatの紹介

<<:  Vueはカスタム命令を使用してページの下部に透かしを追加します

>>:  VSCode+CMake+Clang+GCC 環境構築チュートリアル (Win10 の場合)

推薦する

LinuxのCentos7でmysql5.7.29を構築する詳細なプロセス

1. MySQLをダウンロードする1.1 ダウンロードアドレスhttps://downloads.m...

TypeScript 列挙型

目次1. 概要2. デジタル列挙2.1 逆マッピング3. 文字列の列挙4. const列挙5. まと...

js を使用して数字推測ゲームを実装する

先週、先生が私に数字当てゲームをするちょっとした宿題を出しました。とても面白いと思ったので、適当に書...

シンプルなメッセージボードケースを実現するJavaScript

参考までに、Javascriptを使用してメッセージボードの例(メッセージ削除あり)を実装します。具...

Windows 10 無料インストール版の MySQL インストールと設定のチュートリアル

ネットでいろいろ検索してみたところ、Linux システム向けではなく、現在の新しいバージョンと一致し...

JavaScript スネーク実装コード

この記事の例では、参考までに貪欲なスネークを実装するためのJavaScriptの具体的なコードを共有...

CentOS7にsshをインストールして設定する

1. openssh-serverをインストールする yum インストール -y openssl o...

Linuxシステムにおけるキー認証に基づくSSHサービスのプロセス

ご存知のとおり、SSH は現在、リモート ログイン セッションやその他のネットワーク サービスにセキ...

Linux の圧縮および解凍コマンドの紹介

目次一般的な圧縮形式: gz .bz2 .xz .zip一般的に使用されるアーカイブは圧縮を必要とす...

Linuxのdateコマンドの使用

1. コマンドの紹介date コマンドは、現在の時刻または指定された時刻を指定された形式で表示するた...

Vueはファイルのアップロードとダウンロードを実装します

この記事では、参考までにVueのファイルのアップロードとダウンロードの具体的なコードを紹介します。具...

React Contextの理解と応用についてお話ししましょう

目次序文React Context の初見コンテキストの使い方コンテキストを直接取得できるいくつかの...

js は axios 制限リクエスト キューを実装します

目次背景は次のとおりです。何が起こるでしょうか?背景は次のとおりです。実際の開発では、ネットワークの...

Vue サーバーに js 構成ファイルをインポートする方法

目次背景成し遂げるvue-cli2.0での設定方法の補足要約する背景プロジェクトにはローカル構成ファ...

Echarts 基本入門: 棒グラフと折れ線グラフの一般的な構成

1eChartsの基本手順4つのステップ1 DOMコンテナを見つける2 初期化3 設定オプション4 ...