我想制作一个表,将一个用户的行为反映给我的应用程序中的另一个用户。

我有两个解决方案,我想知道什么会更快?

1)

ID | source_user_id | target_user_id | action_type


在此选项中,我将为每个操作创建一行

2)

Id | source_user_id | target_user_id | action_x | action_y | action_z


在此选项中,我将为其他用户可用的所有操作创建一行,
当不执行操作时,该字段将设置为NULL值
仅当至少执行了一项操作时,才会创建此行

您还能帮我理解为什么最好的选择是

请原谅我的英语不好。
谢谢

最佳答案

会更快吗?

为了获得特定用户的所有操作,第二种解决方案应该更快,尽管这可能只是很小的一部分。

为了添加新动作,第一个解决方案要快得多。第二种解决方案需要重新组织表。

接下来,您不必说第二种情况要输入的内容。如果输入的字符串长度为2,000个字符,则第一种情况可能会快得多,尤其是在hellohellosharp建议使用ID而不是值的情况下。较短的记录和减少的I / O应该弥补必须将一个大表连接到一个小的参考表的不足。

因为您没有提供足够的信息来真正回答有关性能的问题,所以最好的答案是专注于数据库设计。为此,操作表可能应该具有一个自动递增的ID,两个用户ID,一个操作ID和一个发生时间的日期/时间字段。使用适当的索引,获取有关特定用户或用户/操作的信息应该对您的应用程序具有足够好的性能。

10-07 22:42