我们有一张这样的表来维护'评论'对于每篇文章'。我们有数百万篇文章,每篇文章都有多条评论。
我们要求' id'对于每篇文章来说都是独一无二的。但并不一定在所有文章中都是唯一的。
在当前的方法中,我们插入然后使用mysql_insert_id()来获取' id'因此,不需要额外的查询来生成' id'。
CREATE TABLE `comments` (
id bigint unsigned NOT NULL AUTO_INCREMENT,
article int unsigned int default 0,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这种方法有效,但从某种意义上讲,我们需要使用bigint来识别这种方法。即使我们不希望每篇文章的评论超过几千。我们可以手动维护id,但缺点是它需要额外的查询才能获得“id”。我们通过调用mysql_insert_id()来到这里。如果' id'自动递增,这将很容易。可以在文章范围内制作。
关于更好的方法的任何建议,以便
由于
答案 0 :(得分:0)
这种方法有效,但在我们需要的意义上来说这是一种过度杀伤力 使用bigint作为'id',即使我们不期望每篇文章的评论 超过几千。
我不认为这是必要的。想象一下,您想要在应用程序的某个部分输出最近的注释:
url/viewComment/commentId={commentId}
之类的链接。 articleId
和commentInternalId
识别,则所有网址都需要ids 生成id
的一种方法是(基于1):
(COUNT(1) FROM `comments` WHERE article = {article}) + 1
但使用自动增量显然更复杂,更昂贵。