选择LIMIT 1需要很长时间在postgresql上

时间:2018-04-29 07:55:23

标签: sql database postgresql

我在localhost PostgreSQL数据库上运行一个简单的查询,它运行的时间太长了:

SELECT * FROM features LIMIT 1;

我希望这样的查询能在几分之一秒内完成,因为它基本上是“在数据库中的任何地方查看并选择一行”。或者它没有?

  • 表格大小为75GB,估计行数为1.84405e + 008
  • 我是数据库的唯一用户
  • 数据库服务器刚刚启动,所以我猜在内存中没有任何缓存

1 个答案:

答案 0 :(得分:1)

我完全同意@ larwa1n对他发表评论的内容。 我想,这里的原因是SELECT的表现太慢了。 根据我的经验,也许还有其他原因。我列出如下:

  • 该表格过大,请添加一些WHERE CLAUSEINDEX
  • 服务器/磁盘驱动器的性能太慢。
  • 其他过程占用大部分资源。
  • 另一个原因可能来自维护任务,让我再次检查autovacuum是否正在运行?如果没有,请检查此表是否已vacuum?如果没有,请在该表上执行vacuum full。有时,当您在没有vacuum的大型表上执行大量插入/更新/删除操作时,会使表保存在碎片磁盘块中,这将花费更长的时间进行查询。

希望这个答案可以帮助您找出最终原因。