我们已将Kaminari
用于分页记录。我们已经攻击了total_count
方法,因为在2米+记录后,总计数非常慢。
def total_count
@_hacked_total_count || (@_hacked_total_count = self.connection.execute("SELECT (reltuples)::integer FROM pg_class r WHERE relkind = 'r' AND relname ='#{table_name}'").first["reltuples"].to_i)
end
这将返回表中记录总数的大致计数。
但是,当存在搜索查询时,该数字完全无关紧要。
我正在寻找一种快速返回搜索查询号码的方法。 (不需要完全准确 - 但需要有意义(即有些与搜索查询相关)
请建议我们获取上述记录总数的方法是否正确。
P.S - 我们使用Postgres
作为我们的数据库提供者,使用Rails
作为Web开发框架。
答案 0 :(得分:2)
经过几天的磕磕绊绊之后,我通过使用EXPLAIN查询然后提取计数行数来做到这一点。
以下是我写的代码段:
query_plan = ActiveRecord::Base.connection.execute("EXPLAIN <query>").first["QUERY PLAN"]
query_plan.match(/rows=(\d+)/)[1].to_i # returns the rows count
有了这个,我可以安全地删除reltuples
查询。