您的位置:首页 > 数据库

SQL中char和varchar的效率分析

2006-07-26 02:08 323 查看
写这文章之前先查了点资料,刚好找到一个关于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则是重视空间的存储方式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: