gpt4 book ai didi

ruby-on-rails - 我们如何知道查询是缓存还是从数据库中检索?

转载 作者:行者123 更新时间:2023-12-03 15:48:42 24 4
gpt4 key购买 nike

例如:

class Product
has_many :sales_orders

def total_items_deliverable
self.sales_orders.each { |so| #sum the total }
#give back the value
end
end

class SalesOrder
def self.deliverable
# return array of sales_orders that are deliverable to customer
end
end
  • SalesOrder.deliverable #提供所有可交付给客户的销售订单
  • pa = Product.find(1)
  • pa.sales_orders.deliverable #将product_id 为1 且可交付给客户的所有sales_orders 提供
  • pa.total_so_deliverable

  • 我要问的重点是:实际计算了多少次 SalesOrder.deliverable,从第 1、3 和 4 点开始,它们被计算了 3 次,这意味着对数据库的 3 次访问

    所以拥有 total_so_deliverable 是在推广一个胖模型,但更多的数据库访问。或者(在 View 中)我可以在显示内容时进行迭代,所以我最终只访问数据库 2 次而不是 3 次。

    此类问题的任何双赢解决方案/最佳实践?

    最佳答案

    如果查询是缓存,请查看您的环境日志(例如 log/development.log ),您将看到:

    CACHE (0.0ms)   SELECT * FROM `widgets`....


    Widget Load (0.4ms)   SELECT * FROM `widgets`....

    用于数据库查询。

    关于ruby-on-rails - 我们如何知道查询是缓存还是从数据库中检索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978960/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com