У меня следующий запрос:
select *
from radio_ratings rr
inner join radio_groups rg ON rg.id = rr.radio_group_id
where rg.owner_id = 3;
И при запуске EXPLAIN ANALYZE я вижу:
Nested Loop (cost=0.84..79.45 rows=33 width=145) (actual time=0.023..36.320 rows=44122 loops=1)
-> Index Scan using radio_groups_owner_id_fkey on radio_groups rg (cost=0.42..8.94 rows=3 width=81) (actual time=0.009..0.011 rows=4 loops=1)
Index Cond: (owner_id = 3)
-> Index Scan using radio_ratings_radio_group_id_fkey on radio_ratings rr (cost=0.43..22.95 rows=55 width=64) (actual time=0.010..4.288 rows=11030 loops=4)
Index Cond: (radio_group_id = rg.id)
Planning time: 0.247 ms
Execution time: 43.154 ms
Я не понимаю, как я могу изменить запрос, чтобы PostgreSQL неплохие оценки при втором сканировании индекса.Это похоже на простой запрос с классическими значениями внешнего ключа, но PostgreSQL все испортил.
Как мне улучшить это?