回答編集履歴
2
推敲
answer
CHANGED
@@ -7,6 +7,6 @@
|
|
7
7
|
|
8
8
|
どんなに複雑でも、Postgresはチューリング完全ですからカーソルに含める事はできます。
|
9
9
|
|
10
|
+
IDをパラメタにしているところを見ると、ストアドは1件毎に処理しているのでしょうし、それでタイムアウトなら、致命的に遅いのでしょう。
|
11
|
+
|
10
|
-
先ずは、カーソルまたは、loop内でのSQL
|
12
|
+
先ずは、カーソルまたは、loop内でのSQLのチューニングを行ってみる事ですね。
|
11
|
-
IDをパラメタにしているところを見ると、ストアドは1件毎に処理しているのでしょう。
|
12
|
-
それでタイムアウトなら、致命的に遅いのでしょう。
|
1
追記
answer
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
> selectをカーソルにて行い、loop内で1件ずつinsertしたところ、タイムアウトしてしまったためです。
|
2
2
|
> Oracleのバルクインサートのようなものが使えないかと考えましたが、下記処理でもエラーが起きています。
|
3
3
|
|
4
|
-
タイムアウトが理由なら
|
4
|
+
タイムアウトが理由ならSQLのチューニングを行うしかないですね。
|
5
5
|
|
6
|
+
> 複雑なチェック処理やデータの加工を行っている関係上、insert前に1件ずつの処理が必要です。
|
7
|
+
|
8
|
+
どんなに複雑でも、Postgresはチューリング完全ですからカーソルに含める事はできます。
|
9
|
+
|
10
|
+
先ずは、カーソルまたは、loop内でのSQLをチューニングを行ってみる事ですね。
|
6
11
|
IDをパラメタにしているところを見ると、ストアドは1件毎に処理しているのでしょう。
|
7
12
|
それでタイムアウトなら、致命的に遅いのでしょう。
|