首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql表中键入ID

在mysql表中键入ID
EN

Stack Overflow用户
提问于 2014-03-20 14:51:19
回答 3查看 6.6K关注 0票数 2

我在php中创建了一个博客,用户可以在其中发表评论。我在mysql中创建了一个表,其中包含用户的评论。我的表为每个注释保存它的Id号。我可能有数十亿或数万亿的评论。我的最好的类型是什么?我使用int(11),但我认为这还不够以后.有什么更好的选择吗?

EN

回答 3

Stack Overflow用户

发布于 2014-03-20 14:53:59

我喜欢使用UUID来标识行,因为它们:

  1. 很大: 128位
  2. 允许更好的复制,因为没有绑定到序列/标识生成器
  3. 是全局唯一的,而不是只有在这个序列中才是唯一的。

有关如何在这个问题中使用UUID,请参见MySQL。

使用UUID将比int稍微慢一些,因为数据量更大,但在我的经验中,UUID提供的灵活性超过了任何性能损失。

票数 4
EN

Stack Overflow用户

发布于 2014-03-20 15:12:57

如果使用的是MyISAM存储引擎,则可以创建一个自动递增的复合键。这样做,您就可以有效地为每个博客文章设置一个单独的序列,这样您就不太可能最大限度地使用int数据类型。

表创建:

代码语言:javascript
复制
CREATE TABLE Comments (
  `blog_post_id` int not null,
  `comment_id` int not null auto_increment,
  `text` text,
  primary key(`blog_post_id`,`comment_id`)
) ENGINE = MyISAM;

插入(与正常一样):

代码语言:javascript
复制
INSERT INTO Comments (`blog_post_id`,`text`) VALUES
(1,'First!!!'),
(2,'Some sensible comment'),
(1,'OMG... Posting First!! is dumb.'),
(1,'^ I second this...'),
(2,'TURTLES!!'),
(1,'...');

数据:

代码语言:javascript
复制
BLOG_POST_ID    COMMENT_ID    TEXT
1               1             First!!!
1               2             OMG... Posting First!! is dumb.
1               3             ^ I second this...
1               4             ...
2               1             Some sensible comment
2               2             TURTLES!!

参见:SQL Fiddle

票数 1
EN

Stack Overflow用户

发布于 2014-03-20 15:06:06

你的桌子blog

代码语言:javascript
复制
blog_id | blog_title | blog | published_date | blabla

现在,来了一个blog_comment

代码语言:javascript
复制
comment_id | blog_id | comment

现在,我想你不用担心

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22536668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档