【发布时间】:2011-07-23 08:42:15
【问题描述】:
我正在构建一个人脸匹配网络应用程序。
注意:我刚刚发现人们不会将这种类型的应用称为人脸匹配应用。
这是一个基本的工作流程。
- 用户上传照片
- 管理员批准/拒绝照片
- 当用户访问该页面时,会从数据库中随机选择两张照片。
- 用户有两个选项
- 选择其中一张照片
- 跳到另一场比赛
只有一个条件。用户看不到重复的匹配。如果用户已经玩过 1 vs 2,那么用户就不会再看到 2 vs 1。
假设我有以下 4 张照片
桌面照片
ID 1 2 3 4有 6 种可能的匹配项。那些是
1对2 1对3 1对4 2 对 3 2 对 4 3对4为了进行这些匹配,我使用以下交叉连接查询。
select p1.id, p2.id from photos as p1 cross join photos as p2 where p1.id < p2.id
它可以正常工作。我担心的是,随着匹配数量的增加,它会变慢。
我只用 2000 张照片就得到了 1999000 场比赛。这是一个巨大的数字。
所以我想到了一个解决方案,并想出了一个新表来存储所有可能的匹配项。这些行是在管理员批准照片时创建的。
表格匹配
id1 id2 1 2 1 3 1 4 等等最后,我的问题是
我应该继续使用交叉联接还是应该创建一个新表“匹配”?
哪个更好?
任何其他更好的解决方案将不胜感激!
【问题讨论】:
标签: mysql performance join