teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

推敲

2021/08/10 00:35

投稿

sazi
sazi

スコア25430

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

追記

2021/08/10 00:35

投稿

sazi
sazi

スコア25430

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