Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > SQL中char和varchar的效率分析
【标  题】:SQL中char和varchar的效率分析
【关键字】:SQL,char,varchar
【来  源】:http://blog.csdn.net/Anckly/archive/2006/07/26/977406.aspx

SQL中char和varchar的效率分析

Your Ad Here

  写这文章之前先查了点资料,刚好找到一个关于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则是重视空间的存储方式。
随便说说字符集和编码:【上一篇】
Sql 分页:【下一篇】
【相关文章】
  • 续对char与varchar的研究及扩展(一)
  • SQL SERVER存储过程批量插入数据库表数据
  • SQL条件判断语句
  • 安装patch后利用utlrp.sql编译数据库中无效对象
  • 安装MS SQL Server2000“以前的某个程序安装已在安装计算机上创建挂起的文件操作”的解决办法
  • VB通过ADO连接SQL数据的两种方法
  • mysql操作(一)
  • 得到PrepareStatement最终执行的sql语句的方法
  • 转载:关于MYSQL语句存在注入漏洞的写法
  • hibernate+struts+mysql+eclipse工程
  • 【随机文章】
  • 在Excel中,实现在一个区域内的快速输入
  • IP Filter Based Firewalls HOWTO(8)
  • 完美生活
  • 已经装了WIN2000和IIS5以及PWS,怎样才能在本机上调试ASP
  • web2.0理解
  • AXIS学习笔记(四)(建立安全的AXIS服务下)
  • visual c++ 2005 express下开发程序注意事项
  • 微软.NET 常见问题解答(3)
  • Oracle 几个服务各代表什么作用?
  • 分布式事务
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.