我正在使用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扫描只是在读完第一行后才停止?
答案 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日志是否有异常。