我有一堆需要与用户帐户关联的布尔值。它们需要在真假之间切换,尽管不是特别频繁——它们被阅读的次数将比写入的次数更多。大多数情况下,它们只会从 False 设置为 True 一次,但情况并非总是如此。
现在我正在考虑将列附加到用户表中:
用户身份 | other_user_cols | did_a | did_b | did_c |
---|---|---|---|---|
1 | ... | 错误的 | 真的 | 错误的 |
2 | ... | 错误的 | 错误的 | 错误的 |
3 | ... | 真的 | 错误的 | 错误的 |
问题是,有很多这样的布尔列。
假设您需要添加 100 列。这真的仍然是最好的方法吗?
认为:
我觉得这一定是一个非常常见的模式,但是这种将更多布尔列塞入我的表的方式似乎相当混乱。有没有更典型的方法来做它更干净一点?或者这实际上是最好的方法?
为此,我正在使用 Postgres。
以下是我考虑过的一些替代方案:
用户身份 | 标志名称 | 价值 |
---|---|---|
1 | did_a | 错误的 |
1 | did_b | 错误的 |
3 | did_a | 真的 |
作为替代方案,这对我来说似乎是最合理的,但不确定是否真的值得麻烦,或者是否有更好的方法。
SELECT something FROM table WHERE primary_key = ?
Run Code Online (Sandbox Code Playgroud)
对比
SELECT something FROM table WHERE primary_key = ? AND other_key = ?
Run Code Online (Sandbox Code Playgroud)
假设这是一个包含other_key
不会改变结果集的场景。在实践中第二个查询更快吗?或者,如果提供了多个,数据库是否只使用一个最佳密钥?