SQL中char和varchar的效率分析
2006-07-26 02:08
323 查看
写这文章之前先查了点资料,刚好找到一个关于char和varchar性能测试,如下
#############################################################################
测试分三组,每次增加插入的行数,脚本如下:
测试结果:
两表储存空间比较:
Testchar:73.94M
Testvarchar:7.94M
################################################################################################
以上资料表明,无论是在存储速度还是存储空间上,varchar都是占优势的。
然而这次的测试并不是全部准确的,必竟单次的测试,受干拢的因素太多,影响结果。
实际上,var这种定长字符类型的插入和更新速度是比varchar这种变长字符类型要来的快,虽然差的不是很多。
但是在遇到经常频繁的更新数据库时,这种速度差别就会很明显的体现出来。在这种情形下就要使用char类型来提高数据库的效率。
总而言之,char是一种重视时间的存储方式,而varchar则是重视空间的存储方式。
#############################################################################
测试分三组,每次增加插入的行数,脚本如下:
【IT168技术文档】 本次测试的SQL SERVER 2000 的char 与 varchar。 测试分三组,每次增加插入的行数,脚本如下: CREATE TABLE [dbo].[testchar] ( [a] [int] IDENTITY (1, 1) NOT NULL , [b] [char] (200) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[testvarchar] ( [a] [int] IDENTITY (1, 1) NOT NULL , [b] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO --truncate table testvarchar --truncate table testchar declare @i as int set @i=0 while @i<50000 begin insert into testvarchar values(cast(@i as varchar(200))) set @i=@i+1 if @i=50000 break end declare @i as int set @i=0 while @i<50000 begin insert into testchar values(cast(@i as char(200))) set @i=@i+1 if @i=50000 break end |
插入行数 | 数据类型 | Cpu | duration |
50000 | varchar | 2359 | 21203 |
50000 | char | 2344 | 22250 |
100000 | varchar | 4156 | 44500 |
100000 | char | 4172 | 44186 |
2000000 | varchar | 8907 | 89093 |
2000000 | char | 9188 | 96530 |
Testchar:73.94M
Testvarchar:7.94M
################################################################################################
以上资料表明,无论是在存储速度还是存储空间上,varchar都是占优势的。
然而这次的测试并不是全部准确的,必竟单次的测试,受干拢的因素太多,影响结果。
实际上,var这种定长字符类型的插入和更新速度是比varchar这种变长字符类型要来的快,虽然差的不是很多。
但是在遇到经常频繁的更新数据库时,这种速度差别就会很明显的体现出来。在这种情形下就要使用char类型来提高数据库的效率。
总而言之,char是一种重视时间的存储方式,而varchar则是重视空间的存储方式。
相关文章推荐
- 答:SQLServer DBA 三十问之一: char、varchar、nvarchar之间的区别(包括用途和空间占用);xml类型查找某个节点的数据有哪些方法,哪个效率高;使用存储 过程和使用T-SQL查询数据有啥不一样;
- SQL中char、varchar、nvarchar的区别
- oracle数据库执行计划统计分析,优化表数据字典,提高sql查询效率
- SQL中char、varchar、nvarchar的区别
- SQL中char,varchar,nvarchar等的异同
- SQL中char、varchar、text和nchar、nvarchar、ntext的区别
- 我用c#写了一个测试样例,分析了int,char,datetime和varchar的日志情况而且没有考虑null和空字符串的保存,希望感兴趣的朋友能和我一起交流打造属于自己的日志分析工具
- SQL语句执行效率及分析(note)
- SQL语句执行效率及分析
- explain分析sql效率的方法
- in和exists的区别与SQL执行效率分析
- MySQL利用profile分析慢sql详解(group left join效率高于子查询)
- in和exists的区别与SQL执行效率分析
- SQL中的char、varchar、nvarchar
- sql语句执行效率及分析
- SQL中char、varchar、nvarchar的区别
- SQL中char、varchar、nvarchar的区别
- SQL 2005中char、nchar、varchar、ntext and nvarchar(max)的区别
- in和exists的区别与SQL执行效率分析
- 从分析SQLSERVER ERRORLOG查找错误折射出的工作效率问题