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

回答編集履歴

1

追記

2019/10/11 10:16

投稿

sazi
sazi

スコア25430

answer CHANGED
@@ -3,4 +3,25 @@
3
3
  2.そのインデックスに結合条件の項目が含まれていないまたは含まれていても非効率。
4
4
  という事で、2の結合の際に遅くなっているという事が考えられます。
5
5
 
6
- 実行計画を確認すれば、もっと明らかにはなるでしょうが。
6
+ 実行計画を確認すれば、もっと明らかにはなるでしょうが。
7
+
8
+ 追記
9
+ --
10
+ 変更後
11
+ ```Explain
12
+ Nested Loop Left Join
13
+  (cost=2719.23..3363.87 rows=1 width=11)
14
+  (actual time=1606.520..169663.178 rows=47 loops=1)
15
+  Join Filter:
16
+   (((oh.purchase_code)::text = (a1.xxx)::text) AND ((gd.yyy)::text = (a1.yyy)::text))
17
+ ```
18
+ 変更前
19
+ ```Explain
20
+ Hash Left Join
21
+ (cost=3397.63..3401.18 rows=129 width=11)
22
+ (actual time=3364.634..3364.695 rows=188 loops=1)
23
+ Hash Cond:
24
+ (((a1.xxx)::text = (oh.xxx)::text) AND ((a1.yyy)::text = (gd.yyy)::text))
25
+ ```
26
+ 実行計画で見ての通り結合時のメソッドが変わってしまっていて、**actual time**が増大していますね。
27
+ ここが変更前と同じくhash joinになるような、インデックスを適用して下さい。