diff --git a/internal/database/schema.sql b/internal/database/schema.sql index af3cc51..a3625cc 100644 --- a/internal/database/schema.sql +++ b/internal/database/schema.sql @@ -94,9 +94,23 @@ CREATE INDEX IF NOT EXISTS idx_live_routes_withdraw ON live_routes(prefix_id, peer_asn) WHERE withdrawn_at IS NULL; +-- Covering index for SELECT id queries (includes id in index) +CREATE INDEX IF NOT EXISTS idx_live_routes_covering + ON live_routes(prefix_id, origin_asn_id, peer_asn, id) + WHERE withdrawn_at IS NULL; + +-- Index for stats queries +CREATE INDEX IF NOT EXISTS idx_live_routes_stats + ON live_routes(withdrawn_at) + WHERE withdrawn_at IS NULL; + -- Additional indexes for prefixes table CREATE INDEX IF NOT EXISTS idx_prefixes_prefix ON prefixes(prefix); +-- Indexes for asns table +CREATE INDEX IF NOT EXISTS idx_asns_number ON asns(number); + -- Indexes for bgp_peers table CREATE INDEX IF NOT EXISTS idx_bgp_peers_asn ON bgp_peers(peer_asn); -CREATE INDEX IF NOT EXISTS idx_bgp_peers_last_seen ON bgp_peers(last_seen); \ No newline at end of file +CREATE INDEX IF NOT EXISTS idx_bgp_peers_last_seen ON bgp_peers(last_seen); +CREATE INDEX IF NOT EXISTS idx_bgp_peers_ip ON bgp_peers(peer_ip); \ No newline at end of file