我有一个简单的问题,但找不到直接的答案/解释。抱歉,如果重复
我想为一个小型问答游戏建立一个分数表,用户可以在其中提出问题,他们可以是对的,也可以是错的。所以,我想我有 2 个选择,要么是 1 行 = 1 个用户答案的表,如下所示:
用户身份 | 正确答案 | 错误的答案 |
---|---|---|
1 | 0 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
... | ... | ... |
或者一个 1 行 = 1 个用户全局分数的表:
用户身份 | 正确答案 | 错误答案 |
---|---|---|
1 | 42 | 21 |
2 | 100 | 0 |
3 | 12 | 13 |
... | ... | ... |
我对数据库/sql优化的经验几乎为0,所以我不知道哪一个是最有效的。
这是我的思考过程:
第一个选项:更好(?)/更快(?)添加/更新分数,因为我不关心当前表状态,我只需要插入一行但是,要获得用户的全局分数,我需要一个重(?) 查询类似
SELECT SUM(正确), SUM(错误) WHERE userId = x;
由于我想在每个页面/请求上显示用户的全局分数,因此我觉得这不是明智的选择。另外,由于 1 行 = 1 个用户答案,因此表格可能会变得非常大。
第一个选项:较慢(?)添加分数,因为我必须更新现有行。意思是对每个答案选择然后更新。不是特别是我的情况,但这个选项不太灵活,因为与第一个选项不同,我无法存储正确/错误回答的问题。但是,这样我就可以获得用户的总分,而无需大量查询。如果 UPDATE 查询可以返回结果行会更好,这样我就不必先 UPDATE 然后 SELECT 来显示。
最后,如果您愿意花时间回答我,您能否简要解释一下其中一个在技术上更好,以及我如何测试它(是否有某种工具/程序)
谢谢