explain.depesz.com

PostgreSQL's explain analyze made readable

Result: 8IdQ

Settings
# exclusive inclusive rows x rows loops node
1. 9.681 822.815 ↑ 2.8 68,907 1

Group (cost=88,933.85..90,371.69 rows=191,711 width=62) (actual time=807.626..822.815 rows=68,907 loops=1)

  • Group Key: w."PageID", "GroupProducts"."ProductCode
2. 132.484 813.134 ↑ 2.8 68,907 1

Sort (cost=88,933.85..89,413.13 rows=191,711 width=62) (actual time=807.625..813.134 rows=68,907 loops=1)

  • Sort Key: w."PageID", "GroupProducts"."ProductCode
  • Sort Method: external merge Disk: 1,592kB
3. 14.189 680.650 ↑ 2.8 68,907 1

Hash Join (cost=58,911.61..64,902.58 rows=191,711 width=62) (actual time=596.524..680.650 rows=68,907 loops=1)

  • Hash Cond: (("WebPages"."WebPage")::text = (w."WebPage")::text)
4. 12.830 665.425 ↑ 2.8 68,907 1

Unique (cost=58,784.69..60,222.52 rows=191,711 width=276) (actual time=595.465..665.425 rows=68,907 loops=1)

5. 562.250 652.595 ↑ 1.8 108,665 1

Sort (cost=58,784.69..59,263.97 rows=191,711 width=276) (actual time=595.462..652.595 rows=108,665 loops=1)

  • Sort Key: "WebPages"."WebPage", "GroupProducts"."ProductCode
  • Sort Method: external merge Disk: 3,888kB
6. 4.568 90.345 ↑ 1.8 108,665 1

Append (cost=436.30..17,060.92 rows=191,711 width=276) (actual time=3.897..90.345 rows=108,665 loops=1)

7. 4.536 9.764 ↓ 1.0 21,913 1

Hash Join (cost=436.30..1,777.58 rows=21,863 width=26) (actual time=3.897..9.764 rows=21,913 loops=1)

  • Hash Cond: (("GroupProducts"."Group")::text = ("PageGroups"."Group")::text)
8. 1.370 1.370 ↑ 1.0 17,630 1

Seq Scan on "GroupProducts" (cost=0.00..329.30 rows=17,630 width=30) (actual time=0.011..1.370 rows=17,630 loops=1)

9. 1.198 3.858 ↑ 1.0 6,824 1

Hash (cost=351.00..351.00 rows=6,824 width=37) (actual time=3.858..3.858 rows=6,824 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 526kB
10. 1.451 2.660 ↑ 1.0 6,824 1

Hash Join (cost=126.93..351.00 rows=6,824 width=37) (actual time=0.694..2.660 rows=6,824 loops=1)

  • Hash Cond: (("PageGroups"."WebPage")::text = ("WebPages"."WebPage")::text)
11. 0.540 0.540 ↑ 1.0 6,824 1

Seq Scan on "PageGroups" (cost=0.00..130.24 rows=6,824 width=36) (actual time=0.009..0.540 rows=6,824 loops=1)

12. 0.403 0.669 ↑ 1.0 2,930 1

Hash (cost=90.30..90.30 rows=2,930 width=17) (actual time=0.669..0.669 rows=2,930 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 175kB
13. 0.266 0.266 ↑ 1.0 2,930 1

Seq Scan on "WebPages" (cost=0.00..90.30 rows=2,930 width=17) (actual time=0.006..0.266 rows=2,930 loops=1)

14. 5.387 10.920 ↑ 1.0 25,422 1

Hash Join (cost=508.65..2,022.05 rows=25,852 width=30) (actual time=4.475..10.920 rows=25,422 loops=1)

  • Hash Cond: (("GroupProducts_1"."Group")::text = ("PageGroups_1"."Group")::text)
15. 1.091 1.091 ↑ 1.0 17,630 1

Seq Scan on "GroupProducts" "GroupProducts_1" (cost=0.00..329.30 rows=17,630 width=30) (actual time=0.021..1.091 rows=17,630 loops=1)

16. 1.398 4.442 ↑ 1.0 7,935 1

Hash (cost=407.79..407.79 rows=8,069 width=41) (actual time=4.442..4.442 rows=7,935 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 634kB
17. 1.702 3.044 ↑ 1.0 7,935 1

Hash Join (cost=137.15..407.79 rows=8,069 width=41) (actual time=0.942..3.044 rows=7,935 loops=1)

  • Hash Cond: (("PageGroups_1"."WebPage")::text = ("PageChildren_1"."Children")::text)
18. 0.413 0.413 ↑ 1.0 6,824 1

Seq Scan on "PageGroups" "PageGroups_1" (cost=0.00..130.24 rows=6,824 width=36) (actual time=0.008..0.413 rows=6,824 loops=1)

19. 0.474 0.929 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.929..0.929 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
20. 0.455 0.455 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_1" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.011..0.455 rows=3,251 loops=1)

21. 6.511 18.400 ↓ 1.1 30,859 1

Hash Join (cost=560.80..2,414.60 rows=29,389 width=30) (actual time=4.082..18.400 rows=30,859 loops=1)

  • Hash Cond: (("PageGroups_2"."WebPage")::text = ("PageChildren_2"."Children")::text)
22. 6.322 9.408 ↓ 1.0 21,913 1

Hash Join (cost=215.54..1,556.82 rows=21,863 width=25) (actual time=1.595..9.408 rows=21,913 loops=1)

  • Hash Cond: (("GroupProducts_2"."Group")::text = ("PageGroups_2"."Group")::text)
23. 1.526 1.526 ↑ 1.0 17,630 1

Seq Scan on "GroupProducts" "GroupProducts_2" (cost=0.00..329.30 rows=17,630 width=30) (actual time=0.018..1.526 rows=17,630 loops=1)

24. 0.971 1.560 ↑ 1.0 6,824 1

Hash (cost=130.24..130.24 rows=6,824 width=36) (actual time=1.560..1.560 rows=6,824 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 526kB
25. 0.589 0.589 ↑ 1.0 6,824 1

Seq Scan on "PageGroups" "PageGroups_2" (cost=0.00..130.24 rows=6,824 width=36) (actual time=0.009..0.589 rows=6,824 loops=1)

26. 0.667 2.481 ↓ 1.0 3,768 1

Hash (cost=299.06..299.06 rows=3,696 width=38) (actual time=2.481..2.481 rows=3,768 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 281kB
27. 0.786 1.814 ↓ 1.0 3,768 1

Hash Join (cost=137.15..299.06 rows=3,696 width=38) (actual time=0.840..1.814 rows=3,768 loops=1)

  • Hash Cond: (("PageChildren_2"."WebPage")::text = ("PageChildren_1_1"."Children")::text)
28. 0.201 0.201 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_2" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.009..0.201 rows=3,251 loops=1)

29. 0.518 0.827 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.827..0.827 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
30. 0.309 0.309 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_1_1" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.005..0.309 rows=3,251 loops=1)

31. 5.438 18.022 ↑ 1.2 27,093 1

Hash Join (cost=778.64..2,672.68 rows=33,413 width=30) (actual time=5.705..18.022 rows=27,093 loops=1)

  • Hash Cond: (("PageGroups_3"."WebPage")::text = ("PageChildren_3"."Children")::text)
32. 5.658 8.723 ↓ 1.0 21,913 1

Hash Join (cost=215.54..1,556.82 rows=21,863 width=25) (actual time=1.805..8.723 rows=21,913 loops=1)

  • Hash Cond: (("GroupProducts_3"."Group")::text = ("PageGroups_3"."Group")::text)
33. 1.314 1.314 ↑ 1.0 17,630 1

Seq Scan on "GroupProducts" "GroupProducts_3" (cost=0.00..329.30 rows=17,630 width=30) (actual time=0.015..1.314 rows=17,630 loops=1)

34. 1.151 1.751 ↑ 1.0 6,824 1

Hash (cost=130.24..130.24 rows=6,824 width=36) (actual time=1.751..1.751 rows=6,824 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 526kB
35. 0.600 0.600 ↑ 1.0 6,824 1

Seq Scan on "PageGroups" "PageGroups_3" (cost=0.00..130.24 rows=6,824 width=36) (actual time=0.009..0.600 rows=6,824 loops=1)

36. 0.462 3.861 ↑ 1.6 2,704 1

Hash (cost=510.57..510.57 rows=4,202 width=38) (actual time=3.861..3.861 rows=2,704 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 231kB
37. 0.627 3.399 ↑ 1.6 2,704 1

Hash Join (cost=274.29..510.57 rows=4,202 width=38) (actual time=1.801..3.399 rows=2,704 loops=1)

  • Hash Cond: (("PageChildren_2_1"."WebPage")::text = ("PageChildren_1_2"."Children")::text)
38. 0.849 1.906 ↓ 1.0 3,768 1

Hash Join (cost=137.15..299.06 rows=3,696 width=38) (actual time=0.869..1.906 rows=3,768 loops=1)

  • Hash Cond: (("PageChildren_3"."WebPage")::text = ("PageChildren_2_1"."Children")::text)
39. 0.211 0.211 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_3" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.007..0.211 rows=3,251 loops=1)

40. 0.543 0.846 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.846..0.846 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
41. 0.303 0.303 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_2_1" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.005..0.303 rows=3,251 loops=1)

42. 0.550 0.866 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.866..0.866 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
43. 0.316 0.316 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_1_2" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.009..0.316 rows=3,251 loops=1)

44. 1.931 13.729 ↑ 11.3 3,375 1

Hash Join (cost=1,007.53..2,974.70 rows=37,994 width=30) (actual time=6.263..13.729 rows=3,375 loops=1)

  • Hash Cond: (("PageGroups_4"."WebPage")::text = ("PageChildren_4"."Children")::text)
45. 4.638 7.381 ↓ 1.0 21,913 1

Hash Join (cost=215.54..1,556.82 rows=21,863 width=25) (actual time=1.778..7.381 rows=21,913 loops=1)

  • Hash Cond: (("GroupProducts_4"."Group")::text = ("PageGroups_4"."Group")::text)
46. 1.015 1.015 ↑ 1.0 17,630 1

Seq Scan on "GroupProducts" "GroupProducts_4" (cost=0.00..329.30 rows=17,630 width=30) (actual time=0.016..1.015 rows=17,630 loops=1)

47. 1.133 1.728 ↑ 1.0 6,824 1

Hash (cost=130.24..130.24 rows=6,824 width=36) (actual time=1.728..1.728 rows=6,824 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 526kB
48. 0.595 0.595 ↑ 1.0 6,824 1

Seq Scan on "PageGroups" "PageGroups_4" (cost=0.00..130.24 rows=6,824 width=36) (actual time=0.009..0.595 rows=6,824 loops=1)

49. 0.078 4.417 ↑ 10.8 444 1

Hash (cost=732.27..732.27 rows=4,778 width=38) (actual time=4.417..4.417 rows=444 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 93kB
50. 0.223 4.339 ↑ 10.8 444 1

Hash Join (cost=411.44..732.27 rows=4,778 width=38) (actual time=2.694..4.339 rows=444 loops=1)

  • Hash Cond: (("PageChildren_2_2"."WebPage")::text = ("PageChildren_1_3"."Children")::text)
51. 0.579 3.258 ↑ 1.6 2,704 1

Hash Join (cost=274.29..510.57 rows=4,202 width=38) (actual time=1.728..3.258 rows=2,704 loops=1)

  • Hash Cond: (("PageChildren_3_1"."WebPage")::text = ("PageChildren_2_2"."Children")::text)
52. 0.794 1.810 ↓ 1.0 3,768 1

Hash Join (cost=137.15..299.06 rows=3,696 width=38) (actual time=0.842..1.810 rows=3,768 loops=1)

  • Hash Cond: (("PageChildren_4"."WebPage")::text = ("PageChildren_3_1"."Children")::text)
53. 0.195 0.195 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_4" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.006..0.195 rows=3,251 loops=1)

54. 0.549 0.821 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.821..0.821 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
55. 0.272 0.272 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_3_1" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.005..0.272 rows=3,251 loops=1)

56. 0.564 0.869 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.869..0.869 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
57. 0.305 0.305 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_2_2" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.007..0.305 rows=3,251 loops=1)

58. 0.542 0.858 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.858..0.858 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
59. 0.316 0.316 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_1_3" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.009..0.316 rows=3,251 loops=1)

60. 1.515 14.942 ↑ 14,400.0 3 1

Hash Join (cost=1,235.63..3,282.20 rows=43,200 width=30) (actual time=9.410..14.942 rows=3 loops=1)

  • Hash Cond: (("PageGroups_5"."WebPage")::text = ("PageChildren_5"."Children")::text)
61. 4.504 7.341 ↓ 1.0 21,913 1

Hash Join (cost=215.54..1,556.82 rows=21,863 width=25) (actual time=1.892..7.341 rows=21,913 loops=1)

  • Hash Cond: (("GroupProducts_5"."Group")::text = ("PageGroups_5"."Group")::text)
62. 1.004 1.004 ↑ 1.0 17,630 1

Seq Scan on "GroupProducts" "GroupProducts_5" (cost=0.00..329.30 rows=17,630 width=30) (actual time=0.021..1.004 rows=17,630 loops=1)

63. 1.200 1.833 ↑ 1.0 6,824 1

Hash (cost=130.24..130.24 rows=6,824 width=36) (actual time=1.833..1.833 rows=6,824 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 526kB
64. 0.633 0.633 ↑ 1.0 6,824 1

Seq Scan on "PageGroups" "PageGroups_5" (cost=0.00..130.24 rows=6,824 width=36) (actual time=0.010..0.633 rows=6,824 loops=1)

65. 0.005 6.086 ↑ 5,433.0 1 1

Hash (cost=952.17..952.17 rows=5,433 width=38) (actual time=6.086..6.086 rows=1 loops=1)

  • Buckets: 8,192 Batches: 1 Memory Usage: 65kB
66. 0.182 6.081 ↑ 5,433.0 1 1

Hash Join (cost=619.56..952.17 rows=5,433 width=38) (actual time=4.556..6.081 rows=1 loops=1)

  • Hash Cond: (("PageChildren_3_2"."WebPage")::text = ("PageChildren_2_3"."Children")::text)
67. 0.578 3.401 ↑ 1.6 2,704 1

Hash Join (cost=274.29..510.57 rows=4,202 width=38) (actual time=1.856..3.401 rows=2,704 loops=1)

  • Hash Cond: (("PageChildren_4_1"."WebPage")::text = ("PageChildren_3_2"."Children")::text)
68. 0.813 1.950 ↓ 1.0 3,768 1

Hash Join (cost=137.15..299.06 rows=3,696 width=38) (actual time=0.966..1.950 rows=3,768 loops=1)

  • Hash Cond: (("PageChildren_5"."WebPage")::text = ("PageChildren_4_1"."Children")::text)
69. 0.197 0.197 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_5" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.008..0.197 rows=3,251 loops=1)

70. 0.567 0.940 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.940..0.940 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
71. 0.373 0.373 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_4_1" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.005..0.373 rows=3,251 loops=1)

72. 0.540 0.873 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.873..0.873 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
73. 0.333 0.333 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_3_2" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.015..0.333 rows=3,251 loops=1)

74. 0.643 2.498 ↓ 1.0 3,768 1

Hash (cost=299.06..299.06 rows=3,696 width=38) (actual time=2.498..2.498 rows=3,768 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 281kB
75. 0.778 1.855 ↓ 1.0 3,768 1

Hash Join (cost=137.15..299.06 rows=3,696 width=38) (actual time=0.897..1.855 rows=3,768 loops=1)

  • Hash Cond: (("PageChildren_2_3"."WebPage")::text = ("PageChildren_1_4"."Children")::text)
76. 0.205 0.205 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_2_3" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.011..0.205 rows=3,251 loops=1)

77. 0.567 0.872 ↑ 1.0 3,251 1

Hash (cost=96.51..96.51 rows=3,251 width=38) (actual time=0.872..0.872 rows=3,251 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 258kB
78. 0.305 0.305 ↑ 1.0 3,251 1

Seq Scan on "PageChildren" "PageChildren_1_4" (cost=0.00..96.51 rows=3,251 width=38) (actual time=0.005..0.305 rows=3,251 loops=1)

79. 0.430 1.036 ↑ 1.0 2,930 1

Hash (cost=90.30..90.30 rows=2,930 width=21) (actual time=1.036..1.036 rows=2,930 loops=1)

  • Buckets: 4,096 Batches: 1 Memory Usage: 186kB
80. 0.606 0.606 ↑ 1.0 2,930 1

Seq Scan on "WebPages" w (cost=0.00..90.30 rows=2,930 width=21) (actual time=0.013..0.606 rows=2,930 loops=1)