[英]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.