explain.depesz.com

A tool for finding a real cause for slow queries.

Result: soh

options
exclusive inclusive rows x rows loops node
0.145 932.474 ↑ 1.0 4 1

Nested Loop (cost=1.24..81431.08 rows=4 width=9) (actual time=245.251..932.474 rows=4 loops=1)

0.011 0.129 ↑ 1.0 4 1

HashAggregate (cost=1.05..1.09 rows=4 width=2) (actual time=0.125..0.129 rows=4 loops=1)

0.000 0.118 ↑ 1.0 4 1

Seq Scan on currency_pairs c (cost=0.00..1.04 rows=4 width=2) (actual time=0.040..0.118 rows=4 loops=1)

         

SubPlan (forSeq Scan)

0.024 0.176 ↑ 1.0 1 8

Result (cost=0.18..0.19 rows=1 width=0) (actual time=0.021..0.022 rows=1 loops=8)

         

Initplan (forResult)

0.016 0.152 ↑ 1.0 1 8

Limit (cost=0.00..0.18 rows=1 width=8) (actual time=0.019..0.019 rows=1 loops=8)

0.136 0.136 ↑ 8016.0 1 8

Index Scan Backward using trades_pkey on trades t (cost=0.00..1404.57 rows=8016 width=8) (actual time=0.017..0.017 rows=1 loops=8)

  • Index Cond: (trade_id IS NOT NULL)
  • Filter: (currency_pair_id = c.currency_pair_id)
0.000 0.020 ↑ 1.0 1 4

Index Scan using trades_pkey on trades (cost=0.19..8.46 rows=1 width=17) (actual time=0.003..0.005 rows=1 loops=4)

  • Index Cond: (trade_id = (SubPlan 5))
         

SubPlan (forIndex Scan)

0.024 0.176 ↑ 1.0 1 8

Result (cost=0.18..0.19 rows=1 width=0) (actual time=0.021..0.022 rows=1 loops=8)

         

Initplan (forResult)

0.016 0.152 ↑ 1.0 1 8

Limit (cost=0.00..0.18 rows=1 width=8) (actual time=0.019..0.019 rows=1 loops=8)

0.136 0.136 ↑ 8016.0 1 8

Index Scan Backward using trades_pkey on trades t (cost=0.00..1404.57 rows=8016 width=8) (actual time=0.017..0.017 rows=1 loops=8)

  • Index Cond: (trade_id IS NOT NULL)
  • Filter: (currency_pair_id = c.currency_pair_id)
0.024 0.176 ↑ 1.0 1 8

Result (cost=0.18..0.19 rows=1 width=0) (actual time=0.021..0.022 rows=1 loops=8)

         

Initplan (forResult)

0.016 0.152 ↑ 1.0 1 8

Limit (cost=0.00..0.18 rows=1 width=8) (actual time=0.019..0.019 rows=1 loops=8)

0.136 0.136 ↑ 8016.0 1 8

Index Scan Backward using trades_pkey on trades t (cost=0.00..1404.57 rows=8016 width=8) (actual time=0.017..0.017 rows=1 loops=8)

  • Index Cond: (trade_id IS NOT NULL)
  • Filter: (currency_pair_id = c.currency_pair_id)
         

SubPlan (forNested Loop)

0.360 1.260 ↑ 1.0 1 4

Aggregate (cost=26.75..26.76 rows=1 width=6) (actual time=0.315..0.315 rows=1 loops=4)

0.900 0.900 ↓ 1.2 94 4

Index Scan using trades_trade_timestamp_idx on trades t (cost=0.00..26.56 rows=77 width=6) (actual time=0.042..0.225 rows=94 loops=4)

  • Index Cond: (trade_timestamp > (now() - '1 day'::interval))
  • Filter: (currency_pair_id = trades.currency_pair_id)
0.580 475.984 ↑ 1.0 1 4

Aggregate (cost=10158.33..10158.34 rows=1 width=8) (actual time=118.996..118.996 rows=1 loops=4)

102.136 475.404 ↑ 26.1 78 4

Hash Join (cost=1729.53..10153.24 rows=2037 width=8) (actual time=12.370..118.851 rows=78 loops=4)

  • Hash Cond: (public.limit_orders.order_id = public.orders.order_id)
332.232 332.232 ↑ 1.0 296312 4

Seq Scan on limit_orders (cost=0.00..6921.09 rows=296449 width=16) (actual time=0.010..83.058 rows=296312 loops=4)

  • Filter: (limit_order_outstanding > 0::numeric)
0.152 41.036 ↑ 29.8 78 4

Hash (cost=1700.51..1700.51 rows=2322 width=8) (actual time=10.259..10.259 rows=78 loops=4)

  • Buckets: 1024 Batches: 1 Memory Usage: 2kB
40.884 40.884 ↑ 29.8 78 4

Index Scan using orders_order_cancelled_idx on orders (cost=0.00..1700.51 rows=2322 width=8) (actual time=4.221..10.221 rows=78 loops=4)

  • Index Cond: (order_cancelled IS NULL)
  • Filter: (order_selling AND (order_fulfilled IS NULL) AND (order_processed IS NOT NULL) AND (order_currency_pair_id = trades.currency_pair_id) AND (order_expire > now()))
0.180 454.936 ↑ 1.0 1 4

Aggregate (cost=10163.73..10163.74 rows=1 width=8) (actual time=113.734..113.734 rows=1 loops=4)

100.436 454.756 ↑ 30.3 74 4

Hash Join (cost=1732.41..10158.13 rows=2239 width=8) (actual time=10.401..113.689 rows=74 loops=4)

  • Hash Cond: (public.limit_orders.order_id = public.orders.order_id)
320.720 320.720 ↑ 1.0 296312 4

Seq Scan on limit_orders (cost=0.00..6921.09 rows=296449 width=16) (actual time=0.008..80.180 rows=296312 loops=4)

  • Filter: (limit_order_outstanding > 0::numeric)
0.168 33.600 ↑ 34.5 74 4

Hash (cost=1700.51..1700.51 rows=2552 width=8) (actual time=8.400..8.400 rows=74 loops=4)

  • Buckets: 1024 Batches: 1 Memory Usage: 2kB
33.432 33.432 ↑ 34.5 74 4

Index Scan using orders_order_cancelled_idx on orders (cost=0.00..1700.51 rows=2552 width=8) (actual time=2.718..8.358 rows=74 loops=4)

  • Index Cond: (order_cancelled IS NULL)
  • Filter: ((NOT order_selling) AND (order_fulfilled IS NULL) AND (order_processed IS NOT NULL) AND (order_currency_pair_id = trades.currency_pair_id) AND (order_expire > now()))