使用子查询添加计算列

Add computed column using subquery

提问人:alexander rog 提问时间:10/10/2021 最后编辑:Dale Kalexander rog 更新时间:10/11/2021 访问量:189

问:

在 SQL Server 2000 中,我想添加一个计算列,它基本上是 .MAX(column1)

当然,我收到一个错误,因为不允许子查询。

我基本上尝试做的是获取数据库中的一些表。max(dateandtime)

但是,当我运行我的代码时,它花费的时间太长,因为它是一个非常古老且设计糟糕的数据库,没有键和索引。

因此,我相信通过添加一个新的计算列,即 ,我将更快地执行查询,因为我将查询max(datetime)

(SELECT TOP 1 newcomputedcolumn FROM Mytable) 

我不必这样做

(SELECT TOP 1 dateandtime FROM Mytable 
 ORDER BY dateandtime DESC)

(SELECT MAX(dateandtime) FROM Mytable)

这需要太长时间。

有什么想法吗?多谢。

sql-server 子查询 sql-server-2000 计算列

评论

1赞 marc_s 10/10/2021
你们的专栏上有索引吗?这肯定会大大加快任何查找(和操作)的速度!计算这样的东西并存储它并不是一个非常聪明的想法......dateandtimeMAX()
0赞 alexander rog 10/10/2021
是的,数据库很古老,但我不能升级它。不幸的是,没有索引,而且我对数据库也不是很熟悉。但是,我被告知要进行上述查询,我试图找到解决方案。
0赞 marc_s 10/10/2021
添加索引 - 认真的 - 现在。 - 这应该已经加快了不少速度CREATE INDEX ix_dateandtime ON dbo.YourTableName(dateandtime);
0赞 alexander rog 10/10/2021
好的,我先测试一下。我有 150 个表,现在查询至少需要 5 分钟才能响应。期望是在 5 秒内做出响应。多谢!
0赞 Stu 10/11/2021
这似乎是一个坏主意,这个 max(vlue) 只会在数据更改时更改,除非我误解了您的问题,否则所有行的值都相同,因此请单独存储并使用触发器更新它。理想情况下,然后在视图中使用它,您也许可以在具有标量函数的计算列中返回它 - 但是 SQL Server 2000...不知道。

答: 暂无答案