Azure / Azure/data-api-builder
Evaluate potential redundancies in our generated SQL query
オープン
まだ誰も着手していません。
improvement
triage
- 主要言語
- C#
- スター
- 1.5k
- フォーク
- 372
- 平均マージ
- 3日 22時間
- マージ済み PR(30日)
- 9
説明
This issue is related to #2412. And aims at bringing further optimization.
The current generated SQL query for UPDATE/DELETE includes a second SELECT @ROWS_TO_UPDATE operation. We need to evaluate if this second SELECT is necessary or if it can be removed to further optimize the script.
Current Generated Query
DECLARE @ROWS_TO_UPDATE int;
SET @ROWS_TO_UPDATE = (SELECT COUNT(*) as cnt_rows_to_update FROM [dbo].[todo] WHERE [dbo].[todo].[id] = @param0);
SELECT @ROWS_TO_UPDATE as cnt_rows_to_update;
IF @ROWS_TO_UPDATE = 1
BEGIN
UPDATE [dbo].[todo]
SET [dbo].[todo].[position] = @param1, [dbo].[todo].[owner_id] = @param2
OUTPUT Inserted.[id] AS [id], Inserted.[title] AS [title], Inserted.[completed] AS [completed], Inserted.[owner_id] AS [owner_id], Inserted.[position] AS [order]
WHERE [dbo].[todo].[id] = @param0;
END
Objective
Determine if the second SELECT @ROWS_TO_UPDATE is necessary for the functionality. If it is not required, remove it to streamline the script.
Tasks
- Review the current generated query to understand the purpose of the second SELECT @ROWS_TO_UPDATE.
- Identify all instances and test the query without the second SELECT @ROWS_TO_UPDATE to ensure it still functions correctly.
- If the second select is not required, refactor the query to remove it.
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
ファイルやテストは指定されていません。まず UPDATE/DELETE クエリのジェネレーターを特定し、関連する issue #2412 を確認します。次に、2つ目の SELECT の使用箇所をすべて特定し、関連するクエリテストまたはデータベースチェックを実行します。機能と返される結果が正しいままの場合にのみ SELECT が削除されていれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- csharp, sql
- 領域
- backend, databases
- issue の種類
- リファクタリング
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100