New docs: - guides/pass-prediction.mdx: two-stage workflow (SP-GiST filter then SGP4 propagation), query window comparison tabs, GiST/SP-GiST coexistence example - reference/operators-gist.mdx: &? operator signature and description, observer_window type reference, SP-GiST operator class docs with eccentricity/HEO limitation aside Benchmarks on 14,376 CelesTrak active satellites: - SP-GiST index: 2,344 kB, builds in 19 ms - GiST index: 2,904 kB, builds in 45 ms - Consistency: 0 false negatives, 0 false positives - At 14k catalog size, seqscan (~6 ms) still beats index scan (~8 ms) due to low page count; cross-over expected at ~100k objects
194 lines
4.3 KiB
Plaintext
194 lines
4.3 KiB
Plaintext
Timing is on.
|
|
regime | n | pct
|
|
--------------------+-------+------
|
|
LEO (<2000km) | 13587 | 94.5
|
|
GEO/HEO (>34000km) | 588 | 4.1
|
|
MEO (2000-20000km) | 111 | 0.8
|
|
GEO-transfer | 90 | 0.6
|
|
(4 rows)
|
|
|
|
Time: 7.139 ms
|
|
--- CREATE SP-GiST INDEX ---
|
|
CREATE INDEX
|
|
Time: 12.351 ms
|
|
spgist_size
|
|
-------------
|
|
2424 kB
|
|
(1 row)
|
|
|
|
Time: 1.388 ms
|
|
--- BENCHMARK 1: 2h window, Eagle Idaho, 10 deg min_el ---
|
|
SET
|
|
Time: 0.035 ms
|
|
SET
|
|
Time: 0.021 ms
|
|
Sequential scan:
|
|
QUERY PLAN
|
|
------------------------------------------------------------------------------------------------------------------------------
|
|
Aggregate (cost=470.74..470.75 rows=1 width=8) (actual time=2.706..2.707 rows=1.00 loops=1)
|
|
Buffers: shared hit=291
|
|
-> Seq Scan on bench_catalog (cost=0.00..470.70 rows=14 width=0) (actual time=0.015..2.649 rows=2261.00 loops=1)
|
|
Filter: ('("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window &? tle)
|
|
Rows Removed by Filter: 12115
|
|
Buffers: shared hit=291
|
|
Planning:
|
|
Buffers: shared hit=8
|
|
Planning Time: 0.093 ms
|
|
Execution Time: 2.725 ms
|
|
(10 rows)
|
|
|
|
Time: 3.621 ms
|
|
RESET
|
|
Time: 0.028 ms
|
|
RESET
|
|
Time: 0.009 ms
|
|
SET
|
|
Time: 0.012 ms
|
|
SP-GiST index scan:
|
|
QUERY PLAN
|
|
-----------------------------------------------------------------------------------------------------------------------------------------
|
|
Aggregate (cost=1754.89..1754.90 rows=1 width=8) (actual time=3.896..3.897 rows=1.00 loops=1)
|
|
Buffers: shared hit=1161
|
|
-> Bitmap Heap Scan on bench_catalog (cost=1284.16..1754.86 rows=14 width=0) (actual time=0.957..3.833 rows=2261.00 loops=1)
|
|
Filter: ('("43.6977N 116.3535W 760m","2026-02-16 19:00:00-07","2026-02-16 21:00:00-07",10)'::observer_window &? tle)
|
|
Rows Removed by Filter: 12115
|
|
Heap Blocks: exact=291
|
|
Buffers: shared hit=1161
|
|
-> Bitmap Index Scan on bench_spgist (cost=0.00..1284.16 rows=14376 width=0) (actual time=0.925..0.925 rows=14376.00 loops=1)
|
|
Index Searches: 1
|
|
Buffers: shared hit=870
|
|
Planning Time: 0.050 ms
|
|
Execution Time: 3.936 ms
|
|
(12 rows)
|
|
|
|
Time: 4.150 ms
|
|
RESET
|
|
Time: 0.038 ms
|
|
--- BENCHMARK 2: 24h window, Eagle Idaho, 10 deg min_el ---
|
|
SET
|
|
Time: 0.016 ms
|
|
SET
|
|
Time: 0.009 ms
|
|
Sequential scan:
|
|
seqscan_24h
|
|
-------------
|
|
13562
|
|
(1 row)
|
|
|
|
Time: 2.867 ms
|
|
RESET
|
|
Time: 0.023 ms
|
|
RESET
|
|
Time: 0.008 ms
|
|
SET
|
|
Time: 0.011 ms
|
|
SP-GiST index scan:
|
|
spgist_24h
|
|
------------
|
|
13562
|
|
(1 row)
|
|
|
|
Time: 3.832 ms
|
|
RESET
|
|
Time: 0.025 ms
|
|
--- BENCHMARK 3: 2h window, Equator, 10 deg min_el ---
|
|
SET
|
|
Time: 0.011 ms
|
|
SET
|
|
Time: 0.008 ms
|
|
Sequential scan:
|
|
seqscan_equator
|
|
-----------------
|
|
2073
|
|
(1 row)
|
|
|
|
Time: 2.564 ms
|
|
RESET
|
|
Time: 0.011 ms
|
|
RESET
|
|
Time: 0.007 ms
|
|
SET
|
|
Time: 0.008 ms
|
|
SP-GiST index scan:
|
|
spgist_equator
|
|
----------------
|
|
2073
|
|
(1 row)
|
|
|
|
Time: 3.566 ms
|
|
RESET
|
|
Time: 0.020 ms
|
|
--- BENCHMARK 4: 2h window, Eagle Idaho, 45 deg min_el ---
|
|
SET
|
|
Time: 0.010 ms
|
|
SET
|
|
Time: 0.006 ms
|
|
Sequential scan:
|
|
seqscan_45deg
|
|
---------------
|
|
1407
|
|
(1 row)
|
|
|
|
Time: 2.510 ms
|
|
RESET
|
|
Time: 0.021 ms
|
|
RESET
|
|
Time: 0.007 ms
|
|
SET
|
|
Time: 0.008 ms
|
|
SP-GiST index scan:
|
|
spgist_45deg
|
|
--------------
|
|
1407
|
|
(1 row)
|
|
|
|
Time: 3.591 ms
|
|
RESET
|
|
Time: 0.014 ms
|
|
--- CONSISTENCY CHECK ---
|
|
SET
|
|
Time: 0.017 ms
|
|
SET
|
|
Time: 0.009 ms
|
|
SELECT 2261
|
|
Time: 4.578 ms
|
|
RESET
|
|
Time: 0.023 ms
|
|
RESET
|
|
Time: 0.008 ms
|
|
SET
|
|
Time: 0.010 ms
|
|
SELECT 2261
|
|
Time: 3.583 ms
|
|
RESET
|
|
Time: 0.022 ms
|
|
in_seq_not_idx
|
|
----------------
|
|
0
|
|
(1 row)
|
|
|
|
Time: 0.586 ms
|
|
in_idx_not_seq
|
|
----------------
|
|
0
|
|
(1 row)
|
|
|
|
Time: 0.280 ms
|
|
DROP TABLE
|
|
Time: 0.951 ms
|
|
--- PRUNING SUMMARY ---
|
|
scenario | catalog_size | candidates | candidate_pct | pruning_pct
|
|
------------------+--------------+------------+---------------+-------------
|
|
2h/Eagle/10deg | 14376 | 2261 | 15.7 | 84.3
|
|
2h/Eagle/45deg | 14376 | 1407 | 9.8 | 90.2
|
|
2h/Equator/10deg | 14376 | 2073 | 14.4 | 85.6
|
|
24h/Eagle/10deg | 14376 | 13562 | 94.3 | 5.7
|
|
(4 rows)
|
|
|
|
Time: 9.346 ms
|
|
DROP INDEX
|
|
Time: 1.176 ms
|
|
DROP TABLE
|
|
Time: 1.725 ms
|
|
Timing is off.
|