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()))
相关文章推荐
- MySQL批量update语句优化
- mysql-5.6.17源码调试
- js,二进制转换保存到数据库及读取二进制图片
- java中使用mongodb的几种方式
- ORACLE(PL/SQL) 根据字符分割(SPLIT)字符串返回数组
- RHEL7.0 安装Oracle 11gR2报错解决
- DDMS下将data中数据库导出到桌面
- (转)SqlServer中处理每天四亿三千万记录的
- sqlite的日期类型
- 如何正确获取MYSQL的ADO连接字符串
- Oracle ASM操作管理
- mysql 解压缩版配置细则
- 加密你的SQLite
- oracle系列--基础理论
- Oracle学习笔记--导航
- Oracle的入门及一些基本操作
- 10、MySQL数据库乱码解决办法
- SQL*Plus环境下创建PLUSTRACE角色
- Redis与Memcached的区别
- 从关系数据库到非关系数据库