我关心在候选键中选择哪个候选键作为主键。
假设使用mysql数据库(InnoDB)。假设我们有一个唯一的值,学生号,和唯一值ID号(例如社会保险号码)。
学生ID号和ID号都可以是候选密钥。在这种情况下,即使考虑自动增量新列,我也应该设置什么值作为主键?
我的猜测是,innoDB(mysql)使用主键创建集群索引。那么,在需要查找特定范围的列中使用该列是否正确,因为它具有能够找到范围的优点吗?
谢谢你!!
发布于 2022-05-25 17:23:34
首先,您应该知道美国社会保险号码并不是唯一的。
正确的是,InnoDB总是将主键视为群集索引。你不必猜测,手册中记录了这一点:https://dev.mysql.com/doc/refman/8.0/en/innodb-index-types.html
您不一定需要使用主键来找到特定的范围。您也可以使用辅助索引。您甚至可以使用非索引列,但是它会导致表扫描,除非表非常小,否则性能会很差。
在搜索聚集索引和二级索引之间进行选择时,对搜索聚集索引进行更多的优化。
指南中有一些异常,我们不知道您的查询是否属于这些异常之一,因为您还没有描述任何查询。
这提出了一个更广泛的观点:如果不了解需要优化的特定查询,就无法选择最佳的优化策略。
https://stackoverflow.com/questions/72381795
复制相似问题