Azure / Azure/data-api-builder

Evaluate potential redundancies in our generated SQL query

オープン
#2,413 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

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

  1. Review the current generated query to understand the purpose of the second SELECT @ROWS_TO_UPDATE.
  2. Identify all instances and test the query without the second SELECT @ROWS_TO_UPDATE to ensure it still functions correctly.
  3. If the second select is not required, refactor the query to remove it.

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

ファイルやテストは指定されていません。まず UPDATE/DELETE クエリのジェネレーターを特定し、関連する issue #2412 を確認します。次に、2つ目の SELECT の使用箇所をすべて特定し、関連するクエリテストまたはデータベースチェックを実行します。機能と返される結果が正しいままの場合にのみ SELECT が削除されていれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
csharp, sql
領域
backend, databases
issue の種類
リファクタリング
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。