整数の範囲を格納する大きなテーブルがあるとします。私は2つのフィールドでこれを行うことができます:
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
ます)。
場合によっては で選択する必要がありend
、場合によっては で選択する必要length
があり、両方のクエリを高速にする必要がある場合はどうすればよいでしょうか? 両方を保存できます:
start|length|end
10 | 200 |210
5 | 50 |55
しかし、これは正規化されておらず、誰もが両方のフィールドを更新することを覚えておく必要があり、設計が悪いだけです。
start + length
orで選択できることはわかっていますend - start
が、非常に大きなテーブルの場合、これは非常に遅くありませんか?
冗長なデータを保存せずに、計算された値ですばやくクエリを実行するにはどうすればよいですか? または、余分な列を保存するだけでよいでしょうか?