小编Jon*_*ski的帖子

SQL Server 是否缓存查询中的计算值?

每次遇到这种类型的查询时,我总是想知道 SQL Server 将如何解决它。如果我运行需要计算的任何类型的查询,然后在多个位置使用该值,例如在select和 中order by,SQL Server 会为每一行计算两次还是会被缓存?此外,这如何与用户定义的函数一起工作?

例子:

SELECT CompanyId, Count(*)
FROM Sales
ORDER BY Count(*) desc

SELECT Geom.BufferWithTolerance(@radius, 0.01, 0).STEnvelope().STPointN(1).STX, Geom.BufferWithTolerance(@radius, 0.01, 0).STEnvelope().STPointN(1).STY
FROM Table

SELECT Id, udf.MyFunction(Id)
FROM Table
ORDER BY udf.MyFunction(Id)
Run Code Online (Sandbox Code Playgroud)

有没有办法让它更有效率,或者 SQL Server 是否足够聪明来为我处理它?

sql-server

10
推荐指数
1
解决办法
1292
查看次数

在具有数百万行的表中更改列定义的最有效方法是什么

我需要在包含数百万行的表中将一列从 NOT NULL 更改为 NULL。我试过一个简单的

alter table Table1 ALTER COLUMN Column1 XML NULL
Run Code Online (Sandbox Code Playgroud)

但它需要永远。所以这里是我的问题:

  1. 为什么应用更改需要这么长时间?
  2. 有没有更好的方法来做到这一点?

sql-server-2008 database-design

9
推荐指数
2
解决办法
1万
查看次数