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并出现在我们的慢查询日志中。
有什么方法可以提高性能吗?我想在较大的桌子上进行索引扫描会导致速度变慢。