计算类别中的产品时响应时间短
Low response time when counting products in categories
我需要呈现大约 2500 个类别(还包括嵌套类别 - 使用祖先 gem)和每个类别中的产品数量。
类似于以下内容:
因此加载页面需要很长时间。我迭代 5 个列表(深度为 5 个级别的类别)并使用以下代码计算类别中的产品(它总是对当前类别的产品以及所有嵌套的产品求和):
<%= Product.includes(:category).where(:id => @filter_product_ids, categories: {:id => Category.find(root['id']).subtree_ids }).count %>
有什么办法可以加快速度吗?现在我只使用了 200 个类别和 10,000 个产品(预计 500,000 个),加载只有 10,000 个产品的页面需要 30 秒。
谢谢,
米罗斯拉夫
解决方案
您需要查看 运行 数据库中的 SQL 并为这些列创建索引。您似乎正在对产品 table 进行 table 扫描;索引会大大加快速度。
我需要呈现大约 2500 个类别(还包括嵌套类别 - 使用祖先 gem)和每个类别中的产品数量。
类似于以下内容:
因此加载页面需要很长时间。我迭代 5 个列表(深度为 5 个级别的类别)并使用以下代码计算类别中的产品(它总是对当前类别的产品以及所有嵌套的产品求和):
<%= Product.includes(:category).where(:id => @filter_product_ids, categories: {:id => Category.find(root['id']).subtree_ids }).count %>
有什么办法可以加快速度吗?现在我只使用了 200 个类别和 10,000 个产品(预计 500,000 个),加载只有 10,000 个产品的页面需要 30 秒。
谢谢, 米罗斯拉夫
解决方案
您需要查看 运行 数据库中的 SQL 并为这些列创建索引。您似乎正在对产品 table 进行 table 扫描;索引会大大加快速度。