小编Ped*_*o A的帖子

优化相关表中复杂的总和和计数

我有一个categories表,它有两列,idname.

我有一个types表,其中包含三列idcategory_idpoints

我有一个products表,其中包含三列idtype_idcustomer_id

这意味着每个产品都有一个类型,每个类型都有一个类别。一个品类有多种类型,一种类型有多种产品。

我正在使用 MySQL 和 PHP。

从 PHP 中,给定customer_id,我想知道客户在每个类别中分别拥有多少分(例如,向用户显示一个表格)。

我的解决方案:我首先会做一个查询来查找所有类别 id,然后对于每个category_id我会找到该类别中的所有类型(即,所有具有给定 的类型category_id);然后对于每一个,type_id我会计算有多少产品同时具有那个type_id和给定的customer_id,我会把那个数量乘以给定的点数type_id。将每个结果的所有结果相加type_id,我最终得到了给定客户在这方面的总分category_id。正如我所说,我必须为每个category_id. 我的解决方案会起作用,但在我看来它会非常慢。我正在寻找有关如何以更好的方式解决此问题的建议 - 使用更少的查询,或更快的查询,或两者兼而有之。 按照现在的方式,它可能会执行与类别数量一样多的查询。


例子:

/* TABLE: categories */

name           id
A              1
B              2
C              3

/* TABLE: types */

points         id          category_id …
Run Code Online (Sandbox Code Playgroud)

mysql performance join count php query-performance

1
推荐指数
1
解决办法
84
查看次数

标签 统计

count ×1

join ×1

mysql ×1

performance ×1

php ×1

query-performance ×1