每次遇到这种类型的查询时,我总是想知道 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 是否足够聪明来为我处理它?
我需要在包含数百万行的表中将一列从 NOT NULL 更改为 NULL。我试过一个简单的
alter table Table1 ALTER COLUMN Column1 XML NULL
Run Code Online (Sandbox Code Playgroud)
但它需要永远。所以这里是我的问题: