唯一用户标识约束

Unique User Identification Constraints

我正在构建一个应用程序,它要求我唯一地标识每个用户,这样他们就不会在同一服务上注册多次。为此,我需要根据数据库中的现有个人详细信息搜索用户的个人详细信息,以查看是否存在重复项。

我已经对用户名和电子邮件地址进行了唯一限制,但是,该过程要求我检查以下 9 个字段,因为它们在 KYC(了解您的客户)过程中经过审查,所以我有 'certainty' 他们是准确的。

  1. 名字
  2. 中间名
  3. 姓氏
  4. 出生日期
  5. 性别
  6. 国家
  7. 地址 1
  8. 地址 2
  9. 地址 3

我正在为此过程构建一个唯一索引约束 (MySQL),但是,考虑到相当多的字段,我在考虑从服务器端简单地进行检查是否更明智,并完全放弃唯一索引。

请记住,这些字段只会在注册、KYC 和金融交易期间被查询。在大量字段上执行唯一索引时,最佳做法是什么?它可能对系统产生什么性能影响?

在 InnoDB 中,每个辅助键都有隐式添加到末尾的主键。因此,拥有一个 "small" 主键是明智的。

因此,最好为 PRIMARY KEY 使用 AUTO_INCREMENT 并使用 9 列 UNIQUE(辅助)键。 (这与具有 9 列的 PRIMARY KEY 相反。)仅当存在其他 "secondary keys".

时差异才会发挥作用

或者,您可以在其中一些列上使用非 UNIQUE 复合键,并使用代码来完成唯一性约束。