postgres:加入一张带大桌子的小桌子

时间:2014-02-04 07:39:40

标签: postgresql-9.1

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有100万+行。表B有3行。在实际的生产查询中,表A上的其他where子句将#of行减少到15k +,但查询仍然需要超过50ms并出现在我们的慢查询日志中。

有什么方法可以提高性能吗?我想在较大的桌子上进行索引扫描会导致速度变慢。

0 个答案:

没有答案