• sql server 中 bigint 和 datetime 性能比较


    -- 创建表
    create table Test_tbl
    (
        ID varchar(40) primary key nonclustered,
        IntCol int,
    	DateCol datetime
    ) 
    
    --==================================================================================
    -- 【100w数据测试】
    --==================================================================================
    -- 创建100w测试数据
    declare @j int
    declare @data float
    declare @style bigint
    set @j = 1
    while @j<1000000
        begin
           set @style = cast(replace(replace(replace(convert(varchar(30),GETDATE(),120),'-',''),':',''), ' ', '') as bigint)
           insert into Test_tbl(ID, IntCol, DateCol) values(NEWID(),@style, getdate())
        set @j = @j + 1
    end 
    
    declare @d datetime
    set @d = getdate()
    declare   @i   int
    
    print '【100w数据 查询100次测试】'
    -- 测试性能1,datetime
    -------------------------------------------------------------------------------------
    set nocount on -- 不显示受影响行数
    set   @i=0
    while   @i <20
    begin
        select top 1 * from Test_tbl where DateCol>getdate()
        set   @i   =   @i+1
    end
    -------------------------------------------------------------------------------------
    select [语句执行时间(毫秒)]=datediff(ms, @d, getdate())
    set nocount off 
    print '100w数据 date 语句执行时间(毫秒):' + CONVERT(varchar(30), datediff(ms, @d, getdate()))
    
    
    -- 测试性能2,int
    -------------------------------------------------------------------------------------
    set nocount on -- 不显示受影响行数
    set   @i=0
    while   @i <20
    begin
        select top 1 * from Test_tbl where IntCol>20151212030303
        set   @i   =   @i+1
    end
    -------------------------------------------------------------------------------------
    select [语句执行时间(毫秒)]=datediff(ms, @d, getdate())
    set nocount off 
    print '100w数据 int 语句执行时间(毫秒):' + CONVERT(varchar(30), datediff(ms, @d, getdate()))
    
    
    --==================================================================================
    -- 【1000w数据测试】
    --==================================================================================
    -- 创建900w测试数据,累计1000w
    set @j = 1
    while @j<9000000
        begin
           set @style = cast(replace(replace(replace(convert(varchar(30),GETDATE(),120),'-',''),':',''), ' ', '') as bigint)
           insert into Test_tbl(ID, IntCol, DateCol) values(NEWID(),@style,getdate())
        set @j = @j + 1
    end 
    
    print '【1000w数据 查询100次测试】'
    -- 测试性能1,datetime
    -------------------------------------------------------------------------------------
    set nocount on -- 不显示受影响行数
    set   @i=0
    while   @i <100
    begin
        select top 1 * from Test_tbl where DateCol>getdate()
        set   @i   =   @i+1
    end
    -------------------------------------------------------------------------------------
    select [语句执行时间(毫秒)]=datediff(ms, @d, getdate())
    set nocount off 
    print '1000w数据 date 语句执行时间(毫秒):' + CONVERT(varchar(30), datediff(ms, @d, getdate()))
    
    -- 测试性能2,int
    -------------------------------------------------------------------------------------
    set nocount on -- 不显示受影响行数
    set   @i=0
    while   @i <100
    begin
        select top 1 * from Test_tbl where IntCol>20151212030303
        set   @i   =   @i+1
    end
    -------------------------------------------------------------------------------------
    select [语句执行时间(毫秒)]=datediff(ms, @d, getdate())
    set nocount off 
    print '1000w数据 int 语句执行时间(毫秒):' + CONVERT(varchar(30), datediff(ms, @d, getdate()))
    
  • 相关阅读:
    Java编程规范
    java 编程军规
    数据库编程军规条例
    过滤重复记录(因为关联扩展表)
    根据子部门获取其到根部门的路径
    (原创)defparam的应用(Verilog,CPLD/FPGA)
    (原创)学习MCU的感悟_初级(MCU,经验)
    (原创)基于FPGA的调光流水灯(Verilog,CPLD/FPGA)
    (原创)基于MCU的频率可调,占空比可调的PWM实现(MCU,MCS-51/MSP430)
    (原创)动物照的情感与角度拍摄(摄影,欣赏)
  • 原文地址:https://www.cnblogs.com/smallidea/p/5002678.html
Copyright © 2020-2023  润新知