我需要创建一个包含“喜欢”的应用程序。这意味着具有唯一ID的人可以喜欢具有唯一ID的项目,但只能一次。该项目不能被不喜欢。我只提出了一个小表,其中包含 user_id
和 item_id
列,在插入之前我应该检查该用户是否已经喜欢该项目。在我看来,这不是完成任务的最佳方式,因为将会有很多(约 100 万)用户和很多项目,所以表应该相当大,这会影响搜索和插入速度。还有其他方法可以做到这一点吗?或者,如果我的方法适合这里,那么将此信息存储在数据库中的最佳方法是什么?目前我使用的是MySQL数据库,这里使用NoSql是不是更好?
最佳答案
首先要做的就是在两列(组合)上设置“唯一”约束,以便它们的组合是唯一的。不确定 MySQL 是否支持此功能,但 MSSQL Express 确实支持,并且您最多可以拥有 8 GB 的数据,因此 100 万用户还没有接近其限制 - 如果您的数据远远超过 100 万,则可以很好地扩展。您应该在 Liker 和 Like 上创建一个覆盖索引,并使其唯一。使用 80 填充插入将是即时的,查找也是如此。这是一个关系问题,因此关系数据库将优化任何非关系(NO SQL)数据库的速度和效率。你没有提到喜欢者和喜欢者是否是可交换的 - 我想不是
关于sql - 实现 "Like"功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15528577/