Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ チャレンジ:クエリ最適化 | クエリ最適化.インデックス
/
SQL最適化とクエリ機能
セクション 2.  7
single

single

bookチャレンジ:クエリ最適化

メニューを表示するにはスワイプしてください

少なくとも1回の取引を行った口座番号のみを取得したいと仮定します。

この課題では、最適化されていないクエリが与えられています。より最適な方法で書き直してください。

クエリの最適化を高めるための主な書き換え手法は以下の通りです:

  1. カラムを明示的に指定:アスタリスク(*)ワイルドカードの代わりに、クエリ内でカラム名を明示的に指定することで、パフォーマンス、可読性、保守性が向上します;

  2. サブクエリの最小化:サブクエリの使用を減らしてクエリのパフォーマンスを最適化します。複雑さやオーバーヘッドを避けるために、結合や派生テーブルなどの代替手段を検討してください;

  3. IN演算子の繰り返し使用を避ける:クエリ内でIN演算子の使用を制限し、パフォーマンスへの影響を防ぎます。より効率的な実行計画のために、JOINEXISTS句の利用を検討してください;

  4. 論理的な結合順序の整理:SQLの結合はメインテーブルから開始し、その後関連テーブルと結合することで、クエリの構成やデータベースエンジンの最適化を促進します;

  5. 制限的なWHERE条件の使用WHERE句に制限的な条件を含めることで、行を絞り込み、実行速度を向上させます;

  6. ストアドプロシージャや関数へのリファクタリング繰り返しのコード部分をストアドプロシージャやユーザー定義関数にまとめることで、コードの再利用性、モジュール化、保守性が向上します。これにより冗長性を減らし、SQLクエリの最適化が可能になります。

タスク

スワイプしてコーディングを開始

少なくとも1回の取引(他の口座への送金)を行ったすべての口座番号のリストを返すクエリを作成してください。結果は口座番号の昇順で並べ替えてください。

クエリをより効率的かつ可読性の高いものにするため、以下の手順に従ってください:

  • account_number列のみを選択すること;
  • INNER JOINテーブルとBankAccountsテーブルをTransactionsで結合すること;
  • IN演算子やサブクエリは使用しないこと;
  • 結果をaccount_numberの昇順で並べ替えること。

解答

Switch to desktop実践的な練習のためにデスクトップに切り替える下記のオプションのいずれかを利用して、現在の場所から続行する
すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 2.  7
single

single

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

some-alt