相关疑难解决方法(0)

PostgreSQL查询非常慢,限制为1

添加a时,我的查询速度很慢limit 1.

我有一个表格,object_values 其中包含对象的带时间戳值:

 timestamp |  objectID |  value
--------------------------------
 2014-01-27|       234 | ksghdf
Run Code Online (Sandbox Code Playgroud)

每个对象我想得到最新的价值:

SELECT * FROM object_values WHERE (objectID = 53708) ORDER BY timestamp DESC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

(超过10分钟后我取消了查询)

当没有给定objectID的值时,此查询非常慢(如果有结果则速度很快).如果我删除限制它几乎立即告诉我没有结果:

SELECT * FROM object_values WHERE (objectID = 53708) ORDER BY timestamp DESC;  
...  
Time: 0.463 ms
Run Code Online (Sandbox Code Playgroud)

一个解释告诉我,无限制的查询使用索引,其中查询与limit 1不使用索引:

慢查询:

explain SELECT * FROM object_values WHERE (objectID = 53708) ORDER BY timestamp DESC limit 1;  
QUERY PLAN`
----------------------------------------------------------------------------------------------------------------------------
Limit  (cost=0.00..2350.44 rows=1 width=126)
->  Index Scan …
Run Code Online (Sandbox Code Playgroud)

postgresql performance limit

38
推荐指数
3
解决办法
2万
查看次数

标签 统计

limit ×1

performance ×1

postgresql ×1