postgres: объединение маленькой таблицы с большой таблицей

Версия сервера Postgres: сервер 9.1.9

explain analyze 
select * from A, B where A.groupid = B.groupid;
                                                                 QUERY PLAN
--------------------------------------------------------------------------------------------------------------------------------------------
 Merge Join  (cost=1.23..8.64 rows=2 width=104) (actual time=0.076..204.212 rows=3 loops=1)
   Merge Cond: (A.groupid = B.groupid)
   ->  Index Scan using A_pkey on A  (cost=0.00..68144.37 rows=1065413 width=88) (actual time=0.008..115.366 rows=120938 loops=1)
   ->  Sort  (cost=1.03..1.03 rows=2 width=16) (actual time=0.013..0.016 rows=3 loops=1)
         Sort Key: B.groupid
         Sort Method: quicksort  Memory: 25kB
         ->  Seq Scan on B  (cost=0.00..1.02 rows=2 width=16) (actual time=0.002..0.004 rows=3 loops=1)
 Total runtime: 204.257 ms
(8 rows)

Таблица A содержит более 1 миллиона строк. Таблица B имеет 3 строки. В реальном производственном запросе есть другие предложения where в таблице A, которые уменьшают количество строк до 15 000+, но все равно запрос занимает более 50 мс и появляется в наших журналах медленных запросов.

Есть ли способ улучшить производительность здесь? Я предполагаю, что сканирование индекса на большей таблице вызывает медлительность.


person Sameer Naik    schedule 04.02.2014    source источник