Postgresql-慢“的;从表格“限制1”中选择*;查询

Postgresql-慢“的;从表格“限制1”中选择*;查询,postgresql,Postgresql,我正在使用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.

我正在使用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 scan在读取第一行后不停止?

我认为您误读了explain Analysis的输出

行“限制(成本=0.00..0.02行=1宽度=61)(实际时间=481439.127..481439.129行=1循环=1)”表明它限制了顺序扫描

如果你不受限制地尝试

EXPLAIN ANALYSE SELECT * FROM request_log;
你(可能)会发现这需要更长的时间


问题与数据库中的数据检索有关。在资源使用和查询调优下检查postgresql.conf文件-查找任何异常。检查您的postgresql日志是否有任何异常。

请求日志上是否有索引?是的,我有两个索引:pkey和一列。在这个Seq扫描过程中会有什么不同吗?我会尝试在主键上向查询中添加一个
order by
,看看使用索引是否可以提高访问能力。另外,
request\u log
上的统计信息是否可能已过时?这里的索引不相关。请求日志是视图而不是表吗?查询计划正是您所期望的(它在1行之后停止),但由于某些原因,您有481秒的启动时间。