假设我有一个大表来存储整数范围。我可以用两个字段做到这一点:
start|end
10 |210 (represents 10 to 210)
5 |55 (represents 5 to 55)
(快速按end
列选择),或:
start|length
10 | 200 (represents 10 to 210)
5 | 50 (represents 5 to 55)
(快速按length
列选择)。
如果有时我需要选择 by end
,有时需要选择 by length
,并且两个查询都需要快速,该怎么办?我可以同时存储:
start|length|end
10 | 200 |210
5 | 50 |55
但是这并没有标准化,每个人都必须记住更新这两个字段,这只是糟糕的设计。
我知道我可以选择 by start + length
orend - start
但是对于一个非常大的表,这不是非常慢吗?
如何在不存储冗余数据的情况下通过计算值快速查询 - 或者我应该只存储额外的列?