码迷,mamicode.com
首页 > 数据库 > 详细

sql server 中 bigint 和 datetime 性能比较

时间:2015-11-28 14:55:02      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

-- 创建表
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()))

 

sql server 中 bigint 和 datetime 性能比较

标签:

原文地址:http://www.cnblogs.com/smallidea/p/5002678.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!