cMi*_*nor 7 sql-server sql-server-2008
什么在SQL Server中使用效率更高:pow(x,1/2)或sqrt(x)?哪一个成本更低,哪一个更快?
Ric*_*iwi 14
数学上: SQRT只是一种特殊的形式POWER,使用1/2作为指数
但在SQL Server中,实现方式不同.电力能够采取任何浮点作为第二参数,因此检测的特殊情况,并为每个特殊的情况不同地优化(P2 = 1 =>身份和p2 = 0.5 => SQRT)将使得电力慢于它需要.
如果需要平方根,请使用SQRT. POWER是demonstrably慢约15% .
注意:确保你POWER没有POW使用并且使用0.5 而不是 1/2(字面意思)1/2 = 0
declare @dummy float -- to hold the result without generating resultset
declare @t1 datetime, @t2 datetime, @t3 datetime
declare @a float
set @a = rand()*1000000
declare @i int
select @t1 = getdate()
set @i = 0
while @i < 10000000
begin
select @dummy= sqrt(@a)
set @i = @i + 1
end
select @t2 = getdate()
set @i = 0
while @i < 10000000
begin
select @dummy= power(@a, 0.5)
set @i = @i + 1
end
select @t3 = getdate()
select
Time_SQRT = datediff(ms, @t1, @t2),
Time_POWER = datediff(ms, @t2, @t3)
/*
Time_SQRT Time_POWER
----------- -----------
14540 16430
14333 17053
14073 16493
*/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11524 次 |
| 最近记录: |