sql时间区间查询性能测试
2024-09-03 08:36:09
这个测试针对"一个月"的区间来查询数据。分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函数对表字段做任何动作。
最新文章
- SharpPcap网络包捕获框架的使用--实例代码在vs2005调试通过
- canvas案例——画时钟
- url的内容及格式
- STL vector
- Unable to add window -- token null is not for an application
- 浅谈MySQL索引背后的数据结构及算法(转载)
- 一个简单的javascript获取URL参数的代码
- Clone使用方法详解【转载】
- 并发数据(锁)ReaderWriterLockSlim
- react轮播图----react-slick
- [转] zepto的各种坑
- idea搭建Eureka注册中心
- 指尖下的js ——多触式web前端开发之二:处理简单手势(转)
- 【Redis】Redis的基本安装及使用、Jedis的基本使用、spring-data-redis的集成、主从模式、哨兵模式
- win7+php5.3.10下安装memcache (转)
- Keepalived安装后出现的问题总结
- hadoop伪分布集群搭建
- Anaconda之常用命令
- XSS学习笔记
- VMware Workstation unrecoverable error: (vmx)虚拟机挂起后无法启动问题