RedShiftにてSELECTクエリの実行速度が遅く困っています。
SQLのチューニングの方法についてあまり詳しくなく、スピード改善の参考になる記事や
クエリ中の遅くなっていると予想される箇所などよろしければお伺いしたいです。
問題が出ているのは以下の入力フォームで複数の値を同時に検索することができるSELECTです。
複数のテーブルを結合して、指定のIDかつ最新のものを1件取得するSQLになります。
phpでWHERE OR OR OR・・・で検索条件を繋いでおり。検索条件が百件を超えると遅くなってしまいます。
SQL
1SELECT stores.*,categories.category,cities.cityname 2FROM(SELECT storecode,buildcode,lat.lng,date,rank() OVER (PARTITION BY storecode ORDER BY date DESC) AS rank 3 FROM stores 4 WHERE (storecode = 'A01' AND date <= '2021-04-19') 5 OR (storecode = 'B02' AND date <= '2021-04-20') 6 OR ・・・・. OR ・・・・ 7 AS stores 8LEFT OUTER JOIN categories ON stores.buildcode = categories.buildcode 9LEFT OUTER JOIN meshcode ON (計算の為省略) = cities.meshcode 10WHERE rank = 1
上記SQLについては以前質問し、以下回答があったSQLになります。
https://teratail.com/questions/334027
実行計画は下記の通りになります。
見たことのないような桁になり検索が全く動きません。。。
XN
1 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) 2 Hash Cond: ("outer"."?column10?" = ("inner".meshcode)::text) 3 -> XN Hash Left Join DS_DIST_ALL_NONE (cost=1000010812381.25..1000010812383.59 rows=1 width=245) 4 Hash Cond: (("outer".buildcode)::text = ("inner".buildcode)::text) 5 -> XN Subquery Scan l (cost=1000010812372.86..1000010812375.18 rows=1 width=207) 6 Filter: (rank = 1) 7 -> XN Unique (cost=1000010812372.86..1000010812374.78 rows=32 width=65) 8 -> XN Window (cost=1000010812372.86..1000010812373.94 rows=48 width=65) 9 Partition: storecode 10 Order: date 11 -> XN Sort (cost=1000010812372.86..1000010812372.98 rows=48 width=65) 12 Sort Key: storecode, date 13 -> XN Seq Scan on stores (cost=0.00..10812371.52 rows=48 width=65) 14 Filter: (((storecode)::text = 'A01'::text) AND (date <= '2021-05-11'::date)) 15 -> XN Hash (cost=6.71..6.71 rows=671 width=59) 16 -> XN Seq Scan on categories (cost=0.00..6.71 rows=671 width=59) 17 -> XN Hash (cost=3872.85..3872.85 rows=387285 width=40) 18 -> XN Seq Scan on cities (cost=0.00..3872.85 rows=387285 width=40) 19
回答1件
あなたの回答
tips
プレビュー