我正在数据搜索来自在线游戏的匹配数据,其中每场比赛为5比5,每位玩家在比赛开始时挑选一个独特的角色或英雄。
我的最终目标是使用频繁的项目集生成来确定哪些英雄组合最受欢迎,以及哪些组合可能更频繁地获胜。
我希望有一个基于网络的应用程序,用户输入对方团队选择的英雄,以及团队当前选择的英雄,并推荐英雄选择。这些英雄将更多地出现在与对方球队挑选的英雄的胜利比赛中。
我知道更频繁挑选的英雄也会在获胜游戏中更频繁出现,这就是为什么我可以使用一个只包含游戏模式英雄的交易数据库,每个玩家随机选择英雄
我有一个MySQL数据库,它有一个Match表,一个Hero表和一个MatchHero表,其中包含一个主键(MatchId,HeroId)和一个是否该英雄获胜的bool。该表目前有大约2600万条目。问题是获取数据可能需要3到14秒,具体取决于记录数量(更少的用户选择会导致获取更多记录)。
允许我在获取数据的情况下实现这一点的最佳设计是什么,并且对Web应用程序进行计算的速度足够快?将表存储在内存中?我并不太担心实际的项目集生成算法,因为我已经通过apriori获得了不错的性能。是否可以预先计算与频繁项目集生成相关的任何内容?谢谢你的帮助!
答案 0 :(得分:0)
使用索引可以更快地访问数据。尽可能多地在数据库中进行数据分析,以避免将其复制到应用程序中。减少查询数量,而是使用存储过程和预准备语句。
确保你真的了解Apriori。
如果您使用SQL查询计算每个项目集的支持,那么您做错了。对每个项目集 length 使用1遍数据库;即所有1项目集合1次通过,所有2项目集合1次通过,所有3项目集合1次通过。
Apriori的基本思想并不难,但许多人并没有得到所有的细节,然后它变得比必要的慢得多。