我正在构建一个脸部匹配的Web应用程序。哪一个性能更好?交叉连接还是新表?
注意:我发现人们不会将这种类型的应用程序称为facematch应用程序。
这是一个基本的工作流程。
- 用户上传照片
- 管理员可以批准/拒绝照片
- 当用户访问该页面,两张照片是随机从数据库中选择。
- 用户有两种选择
- 选择照片
- 跳到另一场比赛
有一个条件之一。用户看不到重复的匹配。如果用户已经玩过1对2,那么用户再次看不到2对1。
比方说,我有以下的4张照片
表照片
id 1 2 3 4
有6个可能的匹配。那些是
1 vs 2 1 vs 3 1 vs 4 2 vs 3 2 vs 4 3 vs 4
为了使那些匹配,我使用下面的交叉连接查询。
select p1.id, p2.id from photos as p1 cross join photos as p2 where p1.id < p2.id
它的工作没有问题。我担心的是,随着比赛数量的增加,速度会变慢。
我得到1999000匹配只有2000张照片。这是一个巨大的数字。
所以我想到了一个解决方案,并想出了创建一个新的表,存储所有可能的匹配。这些行是在管理员批准照片时创建的。
表匹配
id1 id2 1 2 1 3 1 4 and so on
最后,我的问题是
我应该继续使用交叉连接,或者我应该创建一个新表“匹配”?
哪一个更好?
任何其他更好的解决方案,将不胜感激!
//谢谢你的回复。我担心的是......它可能会很慢,很多并发连接在哪里..小编说50000.我的MYSQL会与这个交叉连接查询相符吗? – Moon 2011-03-26 21:06:58