【发布时间】:2012-01-08 19:49:08
【问题描述】:
我有一个表,它必须在 mysql 中存储数百万个帖子(在不久的将来)。这是简化的结构(我没有指出我的主键,因为我的问题是基于此的):
CREATE TABLE `posts` (
`post_id` INT NOT NULL AUTO_INCREMENT,
`user_id` BIGINT(20) NOT NULL,
`title` VARCHAR(100),
`content` TEXT
) ENGINE = MyISAM;
我的问题是:定义密钥的最佳方式是什么?
考虑到需要存储的记录数量,是否最好只使用我的
AUTO_INCREMENTing 'post_id' 作为主键和唯一键?我必须同时使用“
post_id”和“user_id”作为复合键才能用作主键和唯一键吗?如果这是最好的,我如何在其他表中使用它作为外键?我是否只是将它们作为列添加到这些表中?
能否请您指出每种引擎的优点和缺点(如果有的话),并可能就使用哪种 ENGINE 提出一些建议。如果我使用第二个选项,我认为 Innodb 将是最好的。我不知道。
【问题讨论】:
-
此外,从理论上讲,如果所有列都易于散列(例如整数),则访问多列索引与访问单列索引相比应该不会对性能造成重大影响。跨度>
-
你可能会找到我以前感兴趣的答案stackoverflow.com/questions/4419499/…
-
谢谢 f00。这是一个绝妙的答案,它解决了我的问题。来自我的 +1 :-)
标签: mysql innodb myisam key composite-primary-key