2015-05-07 88 views
0

我正在構建一個應用程序,它要求我唯一標識每個用戶,以便他們不會在同一服務上多次註冊。爲此,我需要在數據庫中搜索用戶的個人詳細信息以查看是否有重複。獨特的用戶識別約束

我對用戶名和電子郵件地址已經有了一個獨特的約束,但是,該程序要求我檢查以下9個字段,因爲它們在KYC(瞭解您的客戶端)過程中已經過審覈,因此我有'確定性'他們是準確的。

  1. 中間名
  2. 出生日期
  3. 性別
  4. 國家
  5. 地址1
  6. 地址2
  7. 地址3

我正在爲這個過程構建一個唯一的索引約束(MySQL),但是,考慮到相當大數量的字段,我正在思考是否可能更簡單地從服務器端進行檢查,並放棄唯一索引共。

請記住,只有在註冊,KYC和金融交易期間纔會查詢這些字段。在大量領域做獨特的索引時,最佳做法是什麼?它對系統可能會有什麼樣的性能影響?

回答

1

在InnoDB中,每個輔助鍵都有主鍵隱式添加到最後。因此,擁有一個「小」主鍵是明智的。

因此,最好是AUTO_INCREMENTPRIMARY KEY,並有一個9列UNIQUE(二級)密鑰。 (這與9列PRIMARY KEY不同)。只有存在其他「輔助鍵」時,差異才會發揮作用。

或者,您可以在其中一些列上使用非UNIQUE組合鍵,並使用代碼完成唯一性約束。