小编hap*_*set的帖子

postgres 在 ORDER BY "id" DESC LIMIT 1 上表现不佳

我有items以下架构的表(在 postgres v9.3.5 中):

  Column   | Type   |                         Modifiers                  | Storage  
-----------+--------+----------------------------------------------------+----------
 id        | bigint | not null default nextval('items_id_seq'::regclass) | plain    
 data      | text   | not null                                           | extended 
 object_id | bigint | not null                                           | plain    
Indexes:
    "items_pkey" PRIMARY KEY, btree (id)
    "items_object_id_idx" btree (object_id)
Has OIDs: no
Run Code Online (Sandbox Code Playgroud)

当我执行查询时,它会挂起很长时间:

SELECT * FROM "items" WHERE "object_id" = '123' ORDER BY "id" DESC LIMIT 1;
Run Code Online (Sandbox Code Playgroud)

在 VACUUM ANALYZE 之后,查询执行改进了很多,但仍然不完美。

# EXPLAIN ANALYZE SELECT * FROM "items" WHERE "object_id" …
Run Code Online (Sandbox Code Playgroud)

performance postgresql-9.3 slow-log postgresql-performance

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

COUNT(*) 给出超过 1 且 LIMIT 1?

我正在尝试计算旧记录。LIMIT 1在这种情况下,即使我设置了一些限制,为什么 Postgres 仍会给出 1160 的结果?

SELECT COUNT(*) FROM data WHERE datetime < '2015-09-23 00:00:00' LIMIT 1;
Run Code Online (Sandbox Code Playgroud)
 count
--------
1160
(1 row)
Run Code Online (Sandbox Code Playgroud)

我期望的结果是 1 或 0,但结果是 1160。为什么?

postgresql count limits

7
推荐指数
1
解决办法
9601
查看次数