Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
854 views
in Technique[技术] by (71.8m points)

请教一个 MySQL 分区设计问题

先说业务场景,简化如下:
统计 用户 使用哪些工具 完成各项任务的情况(何时完成?成败?耗时?)

我现在的设计如下:

UserTask(用户任务表)
用户ID, 任务ID, 何时完成, 成败, 耗时
前三列是主键,换句话说,一个用户不可能在同一时刻完成多项任务

UserTaskTool(用户任务工具表)
用户ID, 任务ID, 何时完成, 工具ID, 使用程度(相当于工具损耗)
前四列是主键

显然,当用户和任务比较多时,这俩表都会爆炸。而我们的业务一次只会查询一个用户的数据,所以第一个问题,是不是应该根据 用户ID 分区?

另一个问题,您可能会奇怪,为什么不为 UserTask 添加一个 自动ID 做主键,这样 UserTaskTool 就没必要记录三列,只需记录 自动ID。我一开始是这么设计的,但是,如果 UserTaskTool 表没有 用户ID 列,也就没法根据它分区,查询时,当给定 用户ID,如何确保只从 UserTaskTool 的一个分区取数据呢?所以我没有这么做。

或者对于我现在的目标 —— 统计用户使用哪些工具完成各项任务的情况,
您有什么好的建议也可以提。谢谢!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...