在候选键中选择主键的最佳方法是什么?



我关心选择哪个候选键作为主键在候选键中。

假设使用mysql数据库(innoDB)。假设我们有一个唯一的值学生号,和一个唯一值ID号(如社会安全号码).

Student ID number和ID number可以分别作为候选密钥。在这种情况下,我应该设置什么值作为主键,即使考虑自动增加新列?

我猜是innoDB(mysql)使用主键创建集群索引. 那么,在需要查找特定值域的地方使用列是否正确,因为它具有查找值域的优势?

谢谢! !

首先,您应该知道美国社会安全号码不是唯一的。

你是正确的,InnoDB总是把主键作为集群索引。不用猜,手册中有说明:https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html

您不一定需要使用主键来查找特定的范围。您也可以使用二级索引。您甚至可以使用非索引列,但这会导致表扫描,从而导致性能很差,除非表非常小。

如果在搜索聚集索引和二级索引之间进行选择,那么搜索聚集索引会更优化一些。

这条准则有例外,我们不知道你的查询是否属于这些例外,因为你没有描述任何你的查询。

这引出了一个更广泛的观点:如果不知道特定的查询,就无法选择最佳优化策略。你需要优化。

相关内容

最新更新