【发布时间】:2019-09-07 01:44:33
【问题描述】:
简介
所以我最近问了一个question on the information security stack exchange,这让我决定我不想在外部公开自动递增的整数 ID不是因为安全原因,而是因为我认为它会是让用户得出有多少学生在他们之前注册的结论非常令人不安。
问题
但这导致我做出另一个决定,如果我要使用 GUID 或其他某种随机生成的字符串 id,我应该将其用作主键吗?由于我选择的 RDBMS 是 MySQL,选择的数据库引擎是 InnoDB,in InnoDB the primary key is always clustered,并且所有其他索引都是非集群的。如果我将 GUID 设为主键,我会得到非常 bad performance with a higher number of inserts。
建议的解决方案
所以我正在考虑为所有表保留自动递增的整数 id,同时将我的所有外键保留为整数 id,但还要为每个表添加一个唯一索引来存储 GUID,这将暴露在外。然后每次我在我的 API 中收到一个请求,并且我想将 Student 表与数据库中的 Books 表连接起来,我需要做的第一件事就是查询数据库以找出整数 id用于指定的学生 GUID。
既然我认为我绝对不是第一个遇到这个问题的人,或者类似的人,这是解决我的问题的最佳方法吗?
【问题讨论】:
标签: mysql database performance url key