对于我正在进行的项目,我有一个概念性编程/数据库(PHP / MYSQL)问题。只是想知道是否有人可以帮助解决方案。我已经绞尽脑汁试图找出解决这个问题的最佳方法,并且我很确定我到处寻找答案。
由于该概念属于其他人的财产,我无法对该网站的具体内容特别啰嗦。但我会尝试解释我能做些什么......
我有一个涉及快速查询大量数据的项目。我们至少谈论了200万条记录......这本身并不是一个大问题,但我需要查询这些数据并与之交互的方式是。
将以下内容作为此站点的示例工作流程。
1)用户访问网站
2)用户登录
3)用户点击'随机'链接 - 有点像谷歌'我感觉幸运'
4)用户随机显示数据库中他/她的项目 数据库中2Mil +项目列表之前没有看到。这应该能够按项目位置/类型进行过滤。
5)用户提供反馈'在显示的项目上,然后单击下一步
6)显示表格中的下一个随机项目并重复该过程
存储200万条记录并不是问题所在。真正的问题是,如何保存反馈数据,以便从那时起不为该特定用户包含在Generate Link系统中。
也就是说,我将如何以这样的方式执行此操作,即用户不必在项目之间等待很长时间才能完成查询。我知道Splits和Joins可以使用,但是当我尝试它时,这似乎仍然不是很快。
以100%清除为例,这是我在停止研究之前最接近解决方案的问题。
比方说我们有五个表:
item_list
- ItemId (int, inc, PK)
- ItemName (varchar)
- ItemCity (int, rel)
- ItemCountry (int, rel)
item_city
- LocationId (int, inc, PK)
- LocationName (varchar)
item_country
- LocationId (int, inc, PK)
- LocationName (varchar)
user_list
- UserId (int, inc, PK)
- UserName (varchar)
user_input
- InputId (int, inc, PK)
- UserId (int, rel)
- ItemId (int, rel)
- ItemFeedback (text)
当用户对item_list中的项目提供反馈时,会在user_input表中添加一条记录,其中包含相关的UserId和ItemId。 然后,我可以在user_list上对select_input表中的ItemId 不进行选择。 这对我来说是一个不好的方式。如果你有2百万个项目,那么在user_input表中有1个用户有2个mil记录,如果他完成每个项目...但是,如果每个用户都提供反馈,我希望至少50个用户相当于1亿条记录每个项目。逗号分隔的值列表也是如此。
我只是不知道如何在没有大量减速或延迟的情况下实现这一目标,只要您从用户那里获得1000多条反馈。
我真的希望这是有道理的,如果您有任何问题请告诉我,我会尽力回答。
由于 -Dave