回答編集履歴
2
推敲
answer
CHANGED
@@ -14,6 +14,9 @@
|
|
14
14
|
多量のデータを処理する場合には、分割コミットの検討は必要ですね。
|
15
15
|
|
16
16
|
処理するデータ件数を分割する場合、最も効果的なのはインデックス項目を使用する事です。
|
17
|
-
分割した先頭のキーが分かればそこから、
|
17
|
+
分割した先頭のキーが分かればそこから、件数を限定するのが最も効率的です。
|
18
18
|
但し、分割した先頭のキーを求める部分は全件を対象にするので、ここがチューニングのポイントになります。
|
19
|
+
|
20
|
+
または、ページングのように[OFFSET FETCH](https://sql-oracle.com/sqlserver/?p=857)を利用する方法もあります。
|
21
|
+
|
19
22
|
件数という事ではなく、例えば部門ごとになどで適切な件数に分割することが出来れば、チューニングは不要になります。
|
1
追記
answer
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
row_number()による連番を算出する時間に比例します。
|
7
7
|
番号が大きくなればなるほど、番号算出の為に読み込む件数が増えるので当然です。
|
8
|
+
どういった部分に時間が掛かっているかなどは、[実行計画](https://docs.microsoft.com/ja-jp/sql/relational-databases/performance/display-an-actual-execution-plan?view=sql-server-ver15)などで確認が出来ます。
|
8
9
|
|
9
10
|
> 結果の件数が少ない時は問題ないのですが、数百万件返ってくるときはデータ量が多すぎて処理落ちしてしまいます。
|
10
11
|
|