mysql 建表时不设置主键,可以设置某一个字段为聚簇索引么?

发布于 2022-09-12 03:49:06 字数 22 浏览 18 评论 0

rtttttttttttttt

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

喵星人汪星人 2022-09-19 03:49:06

参阅《MySQL参考手册》第15.6.2小节:

每个 InnoDB 表都有一个称为聚簇索引的特殊索引, 其中存储了行的数据。通常,聚簇索引与主键 同义。

  • 在 PRIMARY KEY 表上 定义a 时, InnoDB 将其用作聚簇索引。 为您创建的每个表定义主键。 如果没有逻辑唯一且非空列或列集,请添加一个新的 自动增量 列,其值将自动填充。
  • 如果没有 PRIMARY KEY 为表 定义一个 ,MySQL将找到 UNIQUE 所有键列 所在的第一个 索引, NOT NULL 并将 InnoDB 其用作聚簇索引。
  • 如果表没有 PRIMARY KEY 或 没有 合适的 UNIQUE 索引,则在 InnoDB 内部生成一个隐藏的聚簇索引 GEN_CLUST_INDEX ,该 索引 在包含行ID值的合成列上 命名 。 行按照 InnoDB 分配给此类表中的行 的ID排序 。 行ID是一个6字节的字段,随着新行的插入而单调增加。 因此,由行ID排序的行在物理上处于插入顺序。

所以,如果你的表没有主键,在创建表的时候,你可以设置某一字段为唯一索引UNIQUE,这样它将成为这个表的聚簇索引,如果既没有主键,也没有唯一索引,则mysql将创建一个隐藏的聚簇索引。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文