zoukankan      html  css  js  c++  java
  • 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函数对表字段做任何动作。

  • 相关阅读:
    linux 查找最后几条数据
    O(n) 取得数组中每个元素右边最后一个比它大的元素
    O(n) 取得数组中每个元素右边第一个比它大的元素
    位运算实现整数运算
    随手练——P1141 01迷宫
    迷宫寻路问题全解
    N皇后问题 各种优化
    八数码问题(三种解决办法)
    随手练——Uva-11584 划分成回文串(区间DP)
    【2016蓝桥杯省赛】试题C++ B组试题
  • 原文地址:https://www.cnblogs.com/paulhe/p/3690883.html
Copyright © 2011-2022 走看看