Ada*_*tan 15 postgresql index count
为什么PostgreSQL会顺序扫描表进行COUNT(*)
查询,而有一个非常小的索引主键?
DrC*_*sos 18
官方维基页面对此给出了答案:
[...] 之所以慢,与PostgreSQL 中的MVCC 实现有关。多个事务可以看到数据的不同状态这一事实意味着“COUNT(*)”无法直接汇总整个表中的数据;在某种意义上,PostgreSQL 必须遍历所有行。这通常会导致顺序扫描读取有关表中每一行的信息。[...]
此外,您可以尝试ANALYZE来重建查询平面的信息。
您应该使用COUNT(an uniquly indexed field)
它获得更好的性能,但如果它非常大,则 seq 扫描是唯一的方法。
如果您需要非常快速的数字并且不怕查询架构,您可以执行以下操作
SELECT reltuples FROM pg_class WHERE oid = 'your_table'::regclass
Run Code Online (Sandbox Code Playgroud)
但是不要依赖这个值,因为它只是表中元组的“估计”(尽管通常是确切的)数量。
归档时间: |
|
查看次数: |
9627 次 |
最近记录: |