その他の上手くいかない事例
原因はイマイチわかっていませんが。
Japan PostgreSQL User'sGroup 23
期待した並列度にならないケース メモリソート
/* window関数 */
EXPLAIN ANALYZE
SELECT *,
rank() OVER (PARTITION BY "ブランド" ORDER BY "売上" DESC) AS "順位"
FROM (
SELECT
sales_date::date as "売上日"
,shop as "ブランド"
,sum(price) as "売上"
FROM tab1
GROUP BY "売上日","ブランド") AS "集計";
24.
その他の上手くいかない事例
原因はイマイチわかっていませんが。
Japan PostgreSQL User'sGroup 24
期待した並列度にならないケース メモリソート
/* window関数 */
EXPLAIN ANALYZE
SELECT *,
rank() OVER (PARTITION BY "ブランド" ORDER BY "売上" DESC) AS "順位"
FROM (
SELECT
sales_date::date as "売上日"
,shop as "ブランド"
,sum(price) as "売上"
FROM tab1
GROUP BY "売上日","ブランド") AS "集計";
/* 結果イメージ。
ブランド毎に売上の多かった日ランキング */
売上日 | ブランド | 売上 | 順位
------------+------------+-----------+------
2016-05-11 | DIESEL | 632141504 | 1
2016-07-31 | DIESEL | 622096896 | 2
2016-11-29 | DIESEL | 620818688 | 3
:
2016-04-06 | Dior | 962435003 | 1
2016-03-23 | Dior | 889015872 | 2
:
ソート方式による並列度の変動
おまけにヒントが上手く効かない事案発生
Japan PostgreSQL User'sGroup 27
期待した並列度にならないケース メモリソート
EXPLAIN ANALYZE
SELECT /*+ PARALLEL(tab1 6) */ *,
rank() OVER (PARTITION BY "ブランド" ORDER BY "売上" DESC) AS "順位"
FROM (
SELECT
sales_date::date as "売上日"
,shop as "ブランド"
,sum(price) as "売上"
FROM tab1
GROUP BY "売上日","ブランド") AS "集計";
EXPLAIN ANALYZE
SELECT *,
rank() OVER (PARTITION BY "ブランド" ORDER BY "売上" DESC) AS "順位"
FROM (
SELECT /*+ PARALLEL(tab1 6) */
sales_date::date as "売上日"
,shop as "ブランド"
,sum(price) as "売上"
FROM tab1
GROUP BY "売上日","ブランド") AS "集計";
ここが正解
ってかサブクエリの中に
ヒント書けるんだ