我有一个包含 8 列的表,并且想知道该表的最小可能唯一键。(没有索引)。
这是最明显的:
select count(*)
from (select distinct id1, id2, id3,
id4, id5, id6,
id7, id8
from mytable);
是否有一种快速简便的方法来确定该表的独特列组合?如何进行?
不,没有人们所说的快速简便的方法;正如Barmar 评论的那样:
您得到的任何答案都将取决于当时恰好加载的数据。对表所做的任何更改都可能使结果无效
此外,您以前没有搜索唯一性的主键很容易得出误报。您没有强制执行唯一性,因此应该唯一的列集可能不是。
唯一键由表中的数据确定。您需要了解数据以确定什么是唯一的。
应该有一个拥有唯一键的自然方式,即如果您有一个操作系统用户表,那么唯一键可能应该是他们的用户名。同样,如果您有一张员工表,则无法保证员工姓名(或任何其他属性或属性集)的唯一性,因此您需要创建一个代理键。
只有您可以确定这一点;研究你的数据,你应该能够解决它。
一般来说: