sql时间区间查询性能测试

这个测试针对"一个月"的区间来查询数据。分datetime类型和nvachar类型。

先比较datetime类型:

一.datediff函数

declare @beginTime datetime

set @beginTime = GETDATE()

select top 100 * from [Resume] where DATEDIFF(day,'2013-03-25',UpdateTime)>0 and DATEDIFF(day,'2013-03-25',UpdateTime) < 30

select DATEDIFF(MS,@beginTime,GETDATE())

--result: 26ms

二.大于和小于时间区间

declare @beginTime1 datetime

set @beginTime1 = GETDATE()

select top 100 * from [Resume] where (UpdateTime>'2013/03/25' and UpdateTime < '2013/04/24')

select DATEDIFF(MS,@beginTime1,GETDATE())

--result:20ms

三.between..and..

declare @beginTime2 datetime

set @beginTime2 = GETDATE()

select top 100 * from [Resume] where UpdateTime between '2013/03/25' and '2013/04/24'

select DATEDIFF(MS,@beginTime2,GETDATE())

--result:20ms

 

再比较nvarchar类型:

一.大于和小于时间区间

declare @beginTime4 datetime

set @beginTime4 = GETDATE()

select top 100 * from [Resume] where [ExpireDate] >'2014/3/25' and [ExpireDate] < '2014/4/24'

select DATEDIFF(MS,@beginTime4,GETDATE())

--result:53ms

二.between..and..

declare @beginTime3 datetime

set @beginTime3 = GETDATE()

select top 10 * from [Resume] where [ExpireDate] between '2014/3/25' and '2014/4/24'

select DATEDIFF(MS,@beginTime3,GETDATE())

--result:53ms

通过以上比较,datetime类型查询数据效率要快的多,程序处理也方便。

同一类型字段按照某一时间区间来查询数据的话,用大于和小于时间区间查询数据效率略高。

查询数据时也不鼓励使用sql函数对表字段做任何动作。

 

 

你可能感兴趣的:(性能测试)