我正在构建一个应用程序,要求我唯一地标识每个用户,这样他们就不会在同一个服务上多次注册。为此,我需要根据数据库中现有的详细信息搜索用户的个人详细信息,以查看是否存在重复项。
我已经对用户名和电子邮件地址有一个独特的约束,但是,程序要求我检查以下9个字段,因为它们在KYC(了解您的客户端)过程中经过审查,因此我有'确定性'他们是准确的。
我正在为这个过程构建一个唯一的索引约束(MySQL),但是,考虑到相当多的字段我正在思考是否可以更简单地从服务器端进行检查,并完全放弃唯一索引。
请记住,只有在注册,KYC和金融交易期间才会查询这些字段。在大量字段上执行唯一索引时,最佳做法是什么?它可能对系统产生什么样的性能影响?
答案 0 :(得分:1)
在InnoDB中,每个辅助密钥都将主键隐式添加到末尾。因此,拥有一个“小”主键是明智的。
因此,最好为AUTO_INCREMENT
设置PRIMARY KEY
并拥有9列UNIQUE
(辅助)密钥。 (这与9列PRIMARY KEY
相反。)只有在存在其他“二级密钥”时才会发挥作用。
或者,您可以在其中一些列上使用非UNIQUE
复合键,并使用代码来完成唯一性约束。