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

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

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

解决方法:

考虑到13.6.10.1. Clustered and Secondary Indexes上所说的内容,看来您无法真正定义将聚集索引设置在哪一列上:

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

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

某种骇客可能是:

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

不确定是否可以在GUID上放置第二个UNIQUE索引…也许^^
并且不确定聚集索引的变化会很大;但可能值得一试…

上一篇:python-Google App Engine-跟踪使用了哪些索引


下一篇:如何在数组索引中使用“和”运算符?