假设我们有一个像 YouTube 这样的应用程序,我们希望以随机方式为视频分配 ID,以便用户无法迭代视频。例如。 https://www.youtube.com/watch?v=o4f5G9q_9O4
我搜索了这方面的解决方案,但到处都说非连续 id 会严重损害索引,并且使用递增 id 并公开它们是不安全的(我同意)。
这个 id 应该如何存储? id 不连续会损害索引吗?
PS:我使用 MySQL 来存储这些数据
最佳答案
随机字符串不必是主键。您可以有一个AUTO_INCRMENT
主键,它用作其他表中的外键。此外,您还可以有一个 unique_id
列,其中包含您在 URL 中公开的随机字符串。这可以有一个唯一的索引,这将使查找高效。
这类似于用户表,其中您可能有一个连续的user_id
,以及一个唯一的user_name
列,用于登录、发送消息、显示帖子等
对于 unique_id
列,您最好使用哈希索引而不是 B 树索引。不幸的是,在 MySQL 中,这仅在 MEMORY
存储引擎中可用,在 InnoDB
或 MyISAM
中不可用。
关于mysql - 处理随机 ID 存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52213441/