我是一个SQL Server人员正在试验一个即将发布的大型项目(由于许可),我没有找到很多信息来创建没有聚集索引的主键。我在5.1上读到的所有文档都说主键自动被赋予聚簇索引。由于我使用二进制(16)作为主键列(GUID),我宁愿没有聚集索引。所以......
答案 0 :(得分:3)
这取决于您使用的存储引擎。 MyISAM表不支持聚簇索引,因此MyISAM表上的主键不会聚集。但是,InnoDB表上的主键是聚簇的。
您应该consult the MySQL Manual了解有关每个存储引擎的优缺点的更多详细信息。
你需要一把主键;如果您不自己创建一个,MySQL将为您创建一个隐藏的。你总是可以为主键创建一个AUTO_INCREMENT字段(我认为这比你的表中有隐藏字段更好)。
答案 1 :(得分:2)
考虑到13.6.10.1. Clustered and Secondary Indexes上的内容,似乎无法真正定义聚集索引设置在哪一列:
关于帖子中的第二个问题:表上没有PK,GUID上有UNIQUE索引;它可能是可能的,但它不会改变聚集索引的任何内容:它仍然可能在GUID列上。
某种黑客攻击可能是:
不确定您是否可以在GUID上放置第二个UNIQUE索引...也许^^
不确定聚集索引会有多大变化;但可能值得一试......