【问题标题】:How to improve the performance of counting all rows如何提高计算所有行的性能
【发布时间】:2017-11-02 02:47:54
【问题描述】:

我是这样使用 SQL 的:

TableA有200万条记录,搜索计数速度25.1秒。

select count(*) from TableA;

TableA 有 200 万条记录,TableB 也有 200 万条记录,获取 TableA 和 TableB 速度 3mins 的计数。

如何提高搜索效率?

【问题讨论】:

  • 那么您对“获取 tablea 和 tableb 的计数”的查询是什么?仅 200 万行需要 25 秒似乎非常慢。请Edit您的问题并为两个表(包括所有索引)和使用explain (analyze, verbose)两个查询生成的执行计划添加create table语句。 Formatted textno screen shotsedit您的问题不要在 cmets 中发布代码

标签: postgresql count query-optimization


【解决方案1】:

许多不同的方法来实现这一点:

Slow counting

Involving triggers(一种相当长的方法,但一种有效的方法)

Getting close estimate 而不是获得准确的计数会加快进程。

【讨论】:

    【解决方案2】:

    你真的需要精确的行数吗? 如果没有,你可以使用 pg_stat_user 视图,它会给你一个很好的估计。

     SELECT schemaname,relname,n_live_tup 
     FROM pg_stat_user_tables 
     WHERE relname='TableA'
     AND schemaname='yourSchema'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多