gpt4 book ai didi

mysql - 如何显示类别组合的计数?

转载 作者:行者123 更新时间:2023-11-29 11:47:34 25 4
gpt4 key购买 nike

我有一个表,其中有一个 ProdID 列,后跟一组分类法和术语。举一个简单的例子:

ProdID  |  Type  |  Size  |  Color  |  Flavor  |  ...
10231 | A | LG | GREY | BAD | ...

共有 73 个术语,分为 12 个分类法。

该表包含大约 43,000 个条目。

用户会看到一个分类过滤器,他们可以在其中选择要显示的分类和术语的各种组合(类似于 Amazon 或 Zappos 上的搜索结果)。

客户希望列表中每个术语旁边有一个产品计数,以显示如果他们将该术语添加到当前选择中,他们将收到多少个结果。

当您开始浏览产品时,这与 zappos 上看到的功能相同。每个“类别”旁边都会显示一个计数,即单击它后您将看到的结果数。 (例如 http://www.zappos.com/womens-casual-shoes~94 - 在“类别”的侧边栏部分中,每个术语旁边都有一个计数)

在我看来,计算潜在结果的数量似乎与通过计算获取这些结果是大致相同的问题,因此在每个页面加载时运行 73 个复杂的 SQL 查询似乎是一个糟糕的(也称为缓慢的)选择。

或者,预先计算每个可能的过滤器选择的计数或结果似乎是一件傻事(如果我的数学正确,有 2^73 个可能的不同子集,如果每个查询运行 1 毫秒,则需要3e11 年完成)

因此,我认为要么有更好的数据结构来获取此计数,要么动态计算结果,并且每个请求都会被缓存,以便常见请求运行得更快。

是否有更好的数据结构,可以更快地生成这些计数?

最佳答案

您的原始表将为T,您创建并取消透视表U

ProdID  |  Filter  |  Value 
10231 | Type | A
10231 | Size | LG
10231 | Color | Gray
10231 | Flavor | Bad

然后计算每个分类法的总数

SELECT Filter, Value, Count(*)
FROM U
WHERE U.ProdID IN (SELECT T.ProdID
FROM T
WHERE color = @color -- need build this filter dinamic.
)

关于mysql - 如何显示类别组合的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34664352/

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