一尘不染

创建没有聚簇索引的mysql主键?

sql

我是一名SQL
Server专家,正在为即将进行的大型项目(由于许可)而尝试使用MySQL,但在没有聚簇索引的情况下创建主键的方式方面我找不到很多信息。我在5.1上阅读的所有文档都说,主键会自动获得聚簇索引。由于我在主键列(GUID)上使用了binary(16),所以我宁愿不使用聚簇索引。所以…

  1. 是否可以创建没有聚簇索引的主键?我总是可以将聚簇索引放在date_created列上,但是如何防止mysql自动在主键上创建聚簇索引呢?
  2. 如果不可能,在GUID列上具有唯一索引并且在表上没有主键的情况下,我可以在性能上做到明智吗?我打算在这里使用nhibernate,所以不确定是否没有主键(还没有到此为止)。

阅读 203

收藏
2021-05-30

共1个答案

一尘不染

考虑关于13.6.10.1的内容。聚簇索引和二级索引,看来您无法真正定义聚簇索引设置在哪一列上:

  • 在PK列上
  • 或在具有唯一索引(仅具有非空值)的第一列上
  • 或在某些内部列上-对您而言不是那么有用^^

关于您帖子中的第二个问题:表上没有PK,GUID上有UNIQUE索引;可能是可能的,但是它不会改变有关聚簇索引的任何内容:它仍可能在GUID列上。

某种骇客可能是:

  • 没有定义主键
  • 在date_created字段上放置一个UNIQUE索引(如果您在短时间内没有创建太多行,那可能是可行的…)

不确定是否可以在GUID上放置第二个UNIQUE
索引。但可能值得一试…

2021-05-30