1. 程式人生 > >SQL中char和varchar的效率分析

SQL中char和varchar的效率分析

  寫這文章之前先查了點資料,剛好找到一個關於char和varchar效能測試,如下

#############################################################################

  測試分三組,每次增加插入的行數,指令碼如下:

【IT168技術文件】 本次測試的SQL SERVER 2000char
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 asintset @i=0while @i<50000 begin insert into testvarchar values(cast(@i as varchar(200)))set @i=@i+1if @i=50000break end declare @i asintset @i=
0while @i<50000 begin insert into testchar values(cast(@i aschar(200)))set @i=@i+1if @i=50000break 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則是重視空間的儲存方式。