0
我很难检查以找到两个查询的执行速度,解释分析和基准,因为我得到一个查询超时,但我不知道这个查询是造成这种情况。在rails查询ActiveRecord计数分析
queue_count = purchase.purchase_items.where("queue_id = ?", queue.id).count
相同的SQL查询
SELECT COUNT(*) FROM "purchase_items" WHERE "purchase_items"."purchase_id" = 1241422 AND (queue_id = 3479783)
,所以我不得不删除计数,然后我得到一个解决方案,采取在阵列中的所有记录,并做计数,然后我得到了这样的
queue_count = purchase.purchase_items.where("queue_id = ?", queue.id).all.count
查询
相同的SQL查询
SELECT "purchase_items".* FROM "purchase_items" WHERE "purchase_items"."purchase_id" = 1241422 AND (queue_id = 3479783)
终于得到了一些细微的变化,当我用查询分析和基准检查,所以这是正确的方式?还是我做错了什么?
我已经有该索引,但是当我分析EXPLAIN ANALYZE SELECT COUNT(*)FROM purchase_items时,还有一件事WHERE purchase_id = 1241422 AND(queue_id = 3479783)这个查询在第一次点击时显示执行时间:1.088 ms,second命中这个显示0.148毫秒,是否有任何逻辑背后检查一次或第一次命中执行时间是正确的? – django
你需要运行它几次并计算f.e.平均 - 一次尝试不足以获得正确的数据。如果它是1毫秒或0.1毫秒,那么它非常快,绝对不是瓶颈 – Esse