sql-server – 在SQL Server中使用什么更好:sqrt或pow?

前端之家收集整理的这篇文章主要介绍了sql-server – 在SQL Server中使用什么更好:sqrt或pow?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
sql Server中使用效率更高:pow(x,1/2)还是sqrt(x)?哪一个成本更低,哪一个更快?

解决方法

数学上:SQRT只是POWER的一种特殊形式,使用1/2作为指数

但在sql Server中,实现方式不同. POWER能够将任何浮点作为第二个参数,因此检测特殊情况并针对每种特殊情况进行不同的优化(p2 = 1 => identity和p2 = 0.5 => sqrt)会使POWER慢于它需要的速度.

如果需要平方根,请使用SQRT. POWER明显慢了约15%.

注意:确保你使用的是POWER not POW并且使用0.5而不是1/2(字面意思),因为1/2 = 0

比较测试(以及sql Server 2005的时序):

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
*/

猜你在找的MsSQL相关文章