我是一名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索引…也许^^
并且不确定聚集索引的变化会很大;但可能值得一试…