在我需要实现类似/不同功能的项目中,我想知道从性能的角度来看哪种方法比其他方法更好。如果我必须使用插入删除,那么如果有人喜欢/不喜欢它这么多次会发生什么(那么可能大多数主键编号将基于喜欢/不喜欢被占用)?
有谁知道社交网站是如何做到的?
编辑:
我的表如下:
CREATE TABLE `junc_user_share_like` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`jusid` int(10) unsigned NOT NULL,
`liker` mediumint(8) unsigned NOT NULL,
`when` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `jusid` (`jusid`,`liker`),
KEY `liker` (`liker`),
CONSTRAINT `junc_user_share_like_ibfk_1` FOREIGN KEY (`liker`) REFERENCES `user` (`uid`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `junc_user_share_like_ibfk_2` FOREIGN KEY (`jusid`) REFERENCES `junc_user_share` (`jusid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB
编辑 2:
正如您在上次更新中所说的,这就是我所推断的:
INSERT INTO likes SET jusid=$jusid, liker=$liker
UPDATE junc_user_share SET likes=likes+1 WHERE id=$id
这对喜欢很有用,但如果有人想撤销他的喜欢怎么办?我应该删除喜欢的记录吗?我的问题正是在这里?在这里做什么?