簡體   English   中英

使用ActiveRecord解釋COUNT查詢

[英]Explain COUNT query with ActiveRecord

我想做類似以下的事情:

Post.count.explain # doesn't work

這失敗是因為EXPLAIN是一個關系上的方法,而Post.count不是一個關系。 它只是一個常規整數,是查詢的結果。 那么計數查詢怎么能被解釋?

這是一個生成完全相同的SQL查詢的表單,但返回一個Relation來調用explain

Post.select('count(*)').explain 

兩者都生成SQL

 SELECT COUNT(*) FROM `posts`

...所以查詢計划應該是相同的。

COUNT不應該影響查詢計划,因為它唯一的區別是告訴數據庫獲取行數據,但無論是否有COUNT都需要找到行。

ActiveRecord :: Relation#explain ,我們可以使該方法接受一個塊。

module ExplainBlock
  def explain_block(&block)
    exec_explain(collecting_queries_for_explain { instance_exec(&block) })
  end
end

ActiveRecord::Relation.include(ExplainBlock)

然后Post.all.explain_block { count }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM