【发布时间】:2016-03-21 04:50:19
【问题描述】:
我有大约 1000 万行的表,id 列是 primary key。
然后我删除所有行where id > 10。表格中只剩下 10 行。
现在,当我运行查询 SELECT id FROM tablename 时,执行时间大约为 1.2 - 1.5 秒。
但是SELECT id FROM tablename where id = x 只需要 10 - 11 毫秒。
为什么第一个 SELECT 仅仅 10 行就这么慢?
【问题讨论】:
-
统计数据更新了吗?
-
删除行后您是否运行
vacuum analyze?您甚至可能需要运行vacuum full analyze。对于与性能相关的问题,您应该始终包含使用explain (analyze, verbose, buffers)生成的执行计划 -
@a_horse_with_no_name 我想接受您的评论,但我找不到此按钮。谢谢
标签: sql postgresql postgresql-performance vacuum postgresql-9.5