single
チャレンジ:クエリ最適化
メニューを表示するにはスワイプしてください
少なくとも1回の取引を行った口座番号のみを取得したいと仮定します。
この課題では、最適化されていないクエリが与えられています。より最適な方法で書き直してください。
クエリの最適化を高めるための主な書き換え手法は以下の通りです:
-
カラムを明示的に指定:アスタリスク(
*)ワイルドカードの代わりに、クエリ内でカラム名を明示的に指定することで、パフォーマンス、可読性、保守性が向上します; -
サブクエリの最小化:サブクエリの使用を減らしてクエリのパフォーマンスを最適化します。複雑さやオーバーヘッドを避けるために、結合や派生テーブルなどの代替手段を検討してください;
-
IN演算子の繰り返し使用を避ける:クエリ内で
IN演算子の使用を制限し、パフォーマンスへの影響を防ぎます。より効率的な実行計画のために、JOINやEXISTS句の利用を検討してください; -
論理的な結合順序の整理:SQLの結合はメインテーブルから開始し、その後関連テーブルと結合することで、クエリの構成やデータベースエンジンの最適化を促進します;
-
制限的なWHERE条件の使用:
WHERE句に制限的な条件を含めることで、行を絞り込み、実行速度を向上させます; -
ストアドプロシージャや関数へのリファクタリング:繰り返しのコード部分をストアドプロシージャやユーザー定義関数にまとめることで、コードの再利用性、モジュール化、保守性が向上します。これにより冗長性を減らし、SQLクエリの最適化が可能になります。
スワイプしてコーディングを開始
少なくとも1回の取引(他の口座への送金)を行ったすべての口座番号のリストを返すクエリを作成してください。結果は口座番号の昇順で並べ替えてください。
クエリをより効率的かつ可読性の高いものにするため、以下の手順に従ってください:
account_number列のみを選択すること;INNER JOINテーブルとBankAccountsテーブルをTransactionsで結合すること;IN演算子やサブクエリは使用しないこと;- 結果を
account_numberの昇順で並べ替えること。
解答
フィードバックありがとうございます!
single
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください