我正在将一组数据挖掘算法应用于由一组客户以及大量描述性属性组成的数据集,这些属性总结了他们过去行为的各个方面。有 10,000 多个属性,每个属性都存储为以客户 ID 作为主键的表中的一列。由于几个原因,有必要预先计算这些属性,而不是动态计算它们。我通常会尝试选择具有指定属性集的客户。这些算法可以将任意数量的这些属性组合在一个 SELECT 语句中,并连接所需的表。所有表的行数都相同(每个客户一个)。
我想知道构造这些属性表的最佳方法是什么。将属性分组到 20-30 列的表中更好吗,平均需要更多的连接,但每个 SELECT 的列更少,或者拥有具有最大列数的表以最小化连接数,但可能所有 10K 列都在一次?
我还想过使用一个巨大的 3 列 customerID-attribute-value 表并将所有信息存储在那里,但是构建一个“选择所有具有我需要的这些属性类型查询的客户”会更加困难。
我使用的是 MySQL 5.0+,但我认为这是一个一般的 SQL 问题。