0
外部キーの最小値に基づいてテーブルを更新する方が効率的です。TOPと自己結合を使用した更新
この例では、フラグを設定した行を削除します。
+----+------------+-----------+------------+
| id | fk_id | fk_id2 | some_flag |
+----+------------+-----------+------------+
| 1 | 21 | 1010101 | 1 |
| 2 | 22 | 1010101 | 0 |
| 3 | 23 | 1010101 | 0 |
| 4 | 24 | 1010101 | 0 |
+----+------------+-----------+------------+
私のアプローチは、私が感じて、次の
Update t1
set some_flag = 1
From TableA t1
Left Join TableA t2
on t1.fk_id2 = t2.fk_id2 AND t1.fk_id > t2.fk_id
where t1.fk_id2 = 1010101 AND t2.fk_id2 IS NULL
を使用して自分自身に、テーブルに参加してきました:私は、テーブルレイアウト
最小fk_idでの行にフラグを設定したいですこのように効率的ではなく、よりよい方法が必要です。selectステートメントに基づいて更新することについての考えですが、おそらくそれは良くないでしょう。私は私のソリューションは、フィールドの多くのテーブルの悪いと仮定します。
私は、さまざまなオプション間で実行計画がどのように違うのかを見ることに興味があります。 –
これがより良いアプローチである理由を説明するのに気をつけますか?より混乱しているIMOのようだ。また、これはストアドプロシージャ内でどのように機能しますか? – Triplell89
@ Triplell89あなたがそれを知らないので、ちょっと複雑です。それは私が読みやすく、より効率的です。 – Paparazzi