当我将主键添加到已有数据的表时,每个数据库管理系统都会做什么?
他们是否会分析列的每个值以确认它是唯一的? 或者他们是否有其他优化机制?如果是这样的话,那个机制是什么?
答案 0 :(得分:1)
是的,至少在PostgreSQL和MySQL(也可能是MonetDB)中,DBMS将首先检查所有值是否都是唯一的(就像在sql查询中使用" unique"参数时)。您可以通过计算所有行来计算它,然后计算一个"唯一的"选择相同的行。如果行号不相等,您将无法创建主键。 确实创建了一个索引,但只是为了在创建主键后使用主键时加快速度。