您的位置:首页 > 数据库

sql server 中 bigint 和 datetime 性能比较

2015-11-28 14:38 597 查看
-- 创建表
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()))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: