【发布时间】:2018-04-08 08:19:52
【问题描述】:
我正在一个平台上工作,其中唯一用户 ID 是来自 Amazon Cognito 身份池的身份 ID。看起来像这样:“us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f”
该平台有一个 MySQL 数据库,其中包含一个用户可以查看的项目表。我需要添加一个收藏夹表,其中包含每个用户的每个收藏项。该表可能会增长到数百万行。
“收藏夹”表的布局如下所示:
userID, itemID, dateAdded
其中 userID 和 itemID 一起是一个复合主键。
我的理解是,这种类型的用户 ID(实际上是扩展的 UUID,需要存储为 char 或 varchar)的索引性能很差。因此,不鼓励将其用作数百万行的键或索引。
我的问题是:我的理解是否正确,我是否应该因为这个键而担心以后的性能?我可以采取什么缓解措施来降低性能风险?
我的整体数据库知识不是那么好,所以如果这是一个大问题...将收藏列表移动到 NoSQL 表(其中 userID 作为键将允许恒定的访问时间),并检索一个数组在 SELECT...WHERE IN 查询中使用的收藏项 ID 是可接受的替代方案吗?
非常感谢!
【问题讨论】:
标签: mysql sql amazon-web-services nosql amazon-cognito