gpt4 book ai didi

sql - 具有复杂 WHERE 条件的高效 SELECT - 我是否需要存储具有计算值的列?

转载 作者:行者123 更新时间:2023-12-04 18:25:39 25 4
gpt4 key购买 nike

假设我有一个大表来存储整数范围。我可以用两个字段来做到这一点:

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)

(按长度列快速选择)。

如果有时我需要按 end 进行选择,有时需要按 length 进行选择,并且两个查询都需要快速,该怎么办?我可以同时存储:

start|length|end
10 | 200 |210
5 | 50 |55

但这并没有规范化,每个人都必须记住更新这两个字段,这只是糟糕的设计。

我知道我可以通过 start + lengthend - start 进行选择,但是对于一个非常大的表,这不是非常慢吗?

如何在不存储冗余数据的情况下快速查询计算值 - 或者我应该只存储额外的列?

最佳答案

根据您使用的数据库类型,您可能希望使用触发器来计算派生字段。这样,它们就永远不会不同步。

这意味着每次开始或结束更改时都可以重新计算字段(长度)。

关于sql - 具有复杂 WHERE 条件的高效 SELECT - 我是否需要存储具有计算值的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12774501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com