我用的是PostgreSQL 9.3。我有一个表的数据库,这个表有6亿多行。当我连接到此数据库时,第一个查询非常慢:

explain analyze select * from request_log limit 1;
Limit  (cost=0.00..0.02 rows=1 width=61) (actual time=481439.127..481439.129 rows=1 loops=1)
   ->  Seq Scan on request_log  (cost=0.00..13996870.79 rows=651159679 width=61) (actual time=481439.123..481439.123 rows=1 loops=1)
Total runtime: 481440.488 ms

我不明白-为什么seq扫描在读了第一行之后就没停下来?

最佳答案

我认为你误读了解释分析的结果。
行“Limit(cost=0.00..0.02 rows=1 width=61)(actual time=481439.127..481439.129 rows=1 loops=1)”表示它限制了顺序扫描。
如果你不受限制地尝试

EXPLAIN ANALYSE SELECT * FROM request_log;

你可能会发现这需要更长的时间。
这个问题与数据库中的数据检索有关。在RESOURCE usage和QUERY TUNING下检查postgresql.conf文件-查找任何异常。检查postgresql日志是否有异常。

10-05 18:21