Postgresql - 慢"从表限制1"中选择*询问

时间:2014-08-26 10:09:55

标签: postgresql

我正在使用PostgreSQL 9.3。我有一个表的数据库,这个表有600多万行。当我连接到这个数据库时,第一个查询真的很慢:

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扫描只是在读完第一行后才停止?

1 个答案:

答案 0 :(得分:0)

我认为你错误地阅读了explain analyze的输出。

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

如果你尝试没有限制

EXPLAIN ANALYSE SELECT * FROM request_log;

你(可能)会发现它需要更长的时间。

问题与数据库中的数据检索有关。检查RESOURCE USUAGE和QUERY TUNING下的postgresql.conf文件 - 查找异常。检查postgresql日志是否有异常。