添加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)