我有 postgresql 9.1.14(几周前从 9.1.3 升级,但到目前为止没有问题)。
我最近通过添加新的 UUID 列更改了几个表,并一直在更新这些 UUID 以匹配另一个不相关的系统。这是系统的大型(大约 100'000)更新,通常只有很小的更改。
我更新的其中一个表有一个触发器来更新另一个表(用于查询)这个表现在运行 SELECT 查询比更新前慢 10 倍以上。我更改的原始表没有显示 select 语句的任何减速。查询并不复杂,例如:
SELECT iwork_id,
FROM cofk_union_queryable_work
WHERE date_of_work_std_year > 1800;
我已经试过了reindex
,这张表却没有变化。该表只有几个与 ID 相关的索引,而不是与查询的列相关的索引。vacuum
analyse
EXPLAIN (ANALYSE, BUFFERS, VERBOSE)
在此数据库上运行:
Seq Scan on public.cofk_union_queryable_work (cost=0.00..357332.10 rows=7198 width=4) (actual time=9451.804..32923.487 rows=7434 loops=1)
Output: iwork_id
Filter: (cofk_union_queryable_work.date_of_work_std_year > 1800)
Buffers: shared hit=857 read=354888
Total runtime: 32924.968 ms
该表包含大约 100'000 个条目。
对其他调查有什么想法吗?
VACUUM FULL cofk_union_queryable_work
。\d table
如果您需要帮助,请随时更新您的问题。像往常一样,大部分内容都是@a_horse_with_no_name 在评论中说的。还有,像往常一样。