MySQL 如何使多列组合成为唯一的?

23

我有一个表,用来存储用户在网站上对图片发表的评论。该表包含四列,分别是行ID(主键)、图片ID、用户ID和评论内容。我想要实现的功能是确保每个用户只能在同一张图片上发表一条评论。这样的话,我需要在这两列上创建唯一索引吗?

CREATE UNIQUE INDEX imgusr ON comments (image_id, user_id);

这个想法是使以下查询起作用:

INSERT INTO comments SET image_id = '1', user_id = '2', comment = 'nice' ON DUPLICATE KEY UPDATE comment = 'nice';

问题是表使用的是InnoDB引擎,因为预计数据量将非常大。尽管存在主键,这种方法是否可行?


你试过了吗?你是担心它会失败,还是表现不佳? - outis
两个都是。实际上,我正在从一个系统转换到另一个系统,而且初始表格将非常庞大(立即有400万行,预计在最初几周内将增长到2000万行),因此我希望能够确保我一开始就以正确的方式进行操作。 - Wige
1个回答

13

是的,这将完美地发挥作用。

在另一个主题中,为什么你有一个row_id?你可以简单地将主键设置为(image_id, user_id),这也会起作用。


我之前不知道在InnoDB表中也可以这样做。感谢您的建议。 - Wige

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接