我有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) 我正在尝试计算旧记录。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。为什么?