質問編集履歴

4

質問本文を修正しました。

2021/05/12 04:55

投稿

yowayowanitohei
yowayowanitohei

スコア31

title CHANGED
File without changes
body CHANGED
@@ -43,7 +43,7 @@
43
43
  -> XN Sort (cost=1000010812372.86..1000010812372.98 rows=48 width=65)
44
44
  Sort Key: storecode, date
45
45
  -> XN Seq Scan on stores (cost=0.00..10812371.52 rows=48 width=65)
46
- Filter: (((storecode)::text = '00:00:00:00:00:00'::text) AND (date <= '2021-05-11'::date))
46
+ Filter: (((storecode)::text = 'A01'::text) AND (date <= '2021-05-11'::date))
47
47
  -> XN Hash (cost=6.71..6.71 rows=671 width=59)
48
48
  -> XN Seq Scan on categories (cost=0.00..6.71 rows=671 width=59)
49
49
  -> XN Hash (cost=3872.85..3872.85 rows=387285 width=40)

3

質問本文を修正しました。

2021/05/12 04:55

投稿

yowayowanitohei
yowayowanitohei

スコア31

title CHANGED
File without changes
body CHANGED
@@ -16,7 +16,7 @@
16
16
           WHERE (storecode = 'A01' AND date <= '2021-04-19')
17
17
  OR (storecode = 'B02' AND date <= '2021-04-20')
18
18
           OR ・・・・. OR ・・・・
19
- AS storetable
19
+ AS stores
20
20
  LEFT OUTER JOIN categories ON stores.buildcode = categories.buildcode
21
21
  LEFT OUTER JOIN meshcode ON (計算の為省略) = cities.meshcode
22
22
  WHERE rank = 1

2

説明を追記しました。

2021/05/12 04:53

投稿

yowayowanitohei
yowayowanitohei

スコア31

title CHANGED
@@ -1,1 +1,1 @@
1
- RedshiftにてSELECTの実行速度が遅い場合
1
+ SQL SELECTの実行速度が遅い場合の解決方法
body CHANGED
@@ -1,13 +1,12 @@
1
1
  RedShiftにてSELECTクエリの実行速度が遅く困っています。
2
2
  SQLのチューニングの方法についてあまり詳しくなく、スピード改善の参考になる記事や
3
3
  クエリ中の遅くなっていると予想される箇所などよろしければお伺いしたいです。
4
- 実行ログなど何も用意できておらず申し訳ございませんが、どうぞよろしくお願い致します。
5
4
 
6
5
  ---
7
6
 
8
7
  問題が出ているのは以下の入力フォームで複数の値を同時に検索することができるSELECTです。
9
8
  複数のテーブルを結合して、指定のIDかつ最新のものを1件取得するSQLになります。
10
- phpでWHERE OR OR OR・・・で検索条件を繋いでおり。百件を超えると遅くなってしまいます。
9
+ phpでWHERE OR OR OR・・・で検索条件を繋いでおり。検索条件が百件を超えると遅くなってしまいます。
11
10
 
12
11
 
13
12
  ```SQL

1

説明を追記しました。

2021/05/12 04:48

投稿

yowayowanitohei
yowayowanitohei

スコア31

title CHANGED
File without changes
body CHANGED
@@ -24,4 +24,30 @@
24
24
  ```
25
25
 
26
26
  上記SQLについては以前質問し、以下回答があったSQLになります。
27
- [https://teratail.com/questions/334027](https://teratail.com/questions/334027)
27
+ [https://teratail.com/questions/334027](https://teratail.com/questions/334027)
28
+
29
+
30
+ 実行計画は下記の通りになります。
31
+ 見たことのないような桁になり検索が全く動きません。。。
32
+
33
+ ``` XN Hash Left Join DS_DIST_OUTER (cost=1000010817222.31..999999999999999967336168804116691273849533185806555472917961779471295845921727862608739868455469056.00 rows=2 width=285)
34
+ Outer Dist Key: ((((((floor((("outer".lat * 60::double precision) / 40::double precision)))::text || (floor(("outer".lng - 100::double precision)))::text) || (floor(((("outer".lat * 60::double precisi)::text)
35
+ Hash Cond: ("outer"."?column10?" = ("inner".meshcode)::text)
36
+ -> XN Hash Left Join DS_DIST_ALL_NONE (cost=1000010812381.25..1000010812383.59 rows=1 width=245)
37
+ Hash Cond: (("outer".buildcode)::text = ("inner".buildcode)::text)
38
+ -> XN Subquery Scan l (cost=1000010812372.86..1000010812375.18 rows=1 width=207)
39
+ Filter: (rank = 1)
40
+ -> XN Unique (cost=1000010812372.86..1000010812374.78 rows=32 width=65)
41
+ -> XN Window (cost=1000010812372.86..1000010812373.94 rows=48 width=65)
42
+ Partition: storecode
43
+ Order: date
44
+ -> XN Sort (cost=1000010812372.86..1000010812372.98 rows=48 width=65)
45
+ Sort Key: storecode, date
46
+ -> XN Seq Scan on stores (cost=0.00..10812371.52 rows=48 width=65)
47
+ Filter: (((storecode)::text = '00:00:00:00:00:00'::text) AND (date <= '2021-05-11'::date))
48
+ -> XN Hash (cost=6.71..6.71 rows=671 width=59)
49
+ -> XN Seq Scan on categories (cost=0.00..6.71 rows=671 width=59)
50
+ -> XN Hash (cost=3872.85..3872.85 rows=387285 width=40)
51
+ -> XN Seq Scan on cities (cost=0.00..3872.85 rows=387285 width=40)
52
+
53
+ ```