【发布时间】:2019-12-30 18:51:22
【问题描述】:
我有一个包含手机信息的 mySQL 数据库表,如下所示:
ID Brand Model Price Type Size
==== ===== ===== ===== ====== ====
1 Apple A71 3128 A 40
2 Samsung B7C 3128 B 20
3 Apple ZX5 3128 A 30
4 Huawei Q32 2574 B 40
5 Apple A21 2574 A 25
6 Apple A71 3369 A 30
7 Samsung A71 7413 C 40
现在我想创建另一个表,其中包含每个可能的参数组合的计数。
Params Count
============================================== =======
ALL 1000000
Brand(Apple) 20000
Brand(Apple,Samsung) 40000
Brand(Apple),Model(A71) 7100
Brand(Apple),Type(A) 6000
Brand(Apple),Model(A71,B7C),Type(A,B) 7
Model(A71) 12514
Model(A71,B7C) 26584
Model(A71),Type(A) 6521
Model(A71),Type(A,B) 8958
Model(A71),Type(A,B),Size(40) 85
对于每一种可能的组合,依此类推。我正在考虑创建一个存储过程(我会定期执行),它将对每个现有条件执行查询,但我对它应该是什么样子有点卡住。或者有没有更好的方法来做到这一点?
编辑:我想这样存储信息的原因是能够在客户端应用程序的过滤器中显示结果数量,如图所示。
我想在Params 列上创建索引,以便能够立即获取给定哈希的Count 数字,从而提高性能。
我也尝试过动态查询和缓存值,但我也想尝试这种方法,这样我可以比较哪个更有效。
这就是我现在计算计数的方式:
SELECT COUNT(*) FROM products;
SELECT COUNT(*) FROM products WHERE Brand IN ('Apple');
SELECT COUNT(*) FROM products WHERE Brand IN ('Apple', 'Samsung');
SELECT COUNT(*) FROM products WHERE Brand IN ('Apple') AND Model IN ('A71');
等等
【问题讨论】:
-
您的描述仍然模棱两可。请创建一个有代表性的数据样本和完整的预期结果,并具体描述如何计算计数。
-
听起来像XY Problem。
-
感谢您的评论。我编辑了这个问题,希望它能更清楚地说明我想要实现的目标。