(圖1:數據列表)你看到這些數據,是不是覺得這樣的設計既浪費了存儲 " /> 久久午夜一区二区,国产精品野外AV久久久,超碰免费视频部落格

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

SQL Server datetime數據類型設計、優化誤區

  一、場景 

SQL Server 2005中,有一個表TestDatetime,其中Dates這個字段的數據類型是datetime,如果你看到表的記錄如下圖所示,你最先想到的是什么呢?


(圖1:數據列表)

你看到這些數據,是不是覺得這樣的設計既浪費了存儲空間,又使得這個列的索引增大,查詢起來更慢,你也想使用一些其它的數據類型來代替這個datetime吧?

       其實大家都是這么想的,這個方向是100%正確的,但是在寫這篇文章以前,我進入了兩個誤區:(如果你中了下面的兩個誤區,那么請你看看這篇文章吧。)

誤區一:Dates字段的datetime數據類型換成smalldatetime,這樣數據就由:‘2009-04-0900:00:00.000’變為‘2009-04-09 00:00:00’,這個看起來沒有減少多少存儲空間哦。

誤區二:Dates字段的datetime數據類型換成char(10),這樣數據就由:‘2009-04-09 00:00:00.000’變為‘2009-04-09’,這好像能減少很多存儲空間哦。

  二、分析

SQL Server 2005版本中保存日期的數據類型只有兩種:datetimesmalldatetime,但是在SQL Server 2008版本中新增了一些日期數據類型:timedatesmalldatetimedatetimedatetime2datetimeoffset,其中的date類型就能滿足我們場景中的需求了,如果你幸運的在使用SQL Server 2008的話,那么恭喜你,請使用date數據類型吧。

       但是我就比較可悲一點了,在使用SQL Server 2005的前提下,我進入了誤區一、誤區二。其實這也是因為自己忽略了一下基礎性的東西,如果知道不同數據類型的存儲空間大小,也許就很輕易的避免這樣低級的錯誤了。

其實你查看表TestDatetime中的Dates字段的時候,看到查詢結果中的:“-”、“:”只是用于顯示的,并不是真實保存的時候就這樣格式的。

datetime占用8個字節,前4個字節存儲basedate(即190011日)之前或之后的天數,后4個字節存儲午夜后的毫秒數。值范圍:1753-01-01 9999-12-31

smalldatetime占用4個字節,前2個字節存儲base date190011日)之后的天數。后2個字節存儲午夜后的分鐘數。值范圍:1900-01-01 2079-06-06

date占用3個字節,它比smalldatetime的前2個字節多了1字節,所以值的范圍更廣了。值范圍:0001-01-01 9999-12-31

       所以,如果你使用char(10)來保存截斷的日期,那么你的存儲空間反而更大了。

結論: 如果是SQL Server 2005,那么請你使用smalldatetime吧,數據能節約一半,雖然查詢的時候看起來沒什么改變;如果你是SQLServer 2008,那么請你使用date吧,

  雖然3個字節跟4個字節沒有多大的差距,但是從設計上和邏輯清晰度上都有很大的提升,而且差距有些時候并不是1個字節的問題,比如當表數據量達到幾個億的時候,還是有差別的,又或者一條記錄可能因為差1個字節就剛剛好給8060字節的頁瓜分,這些都不容忽視的。

  三、測試

下面我們就從數據存儲的大小、索引存儲的大小、索引使用時候的速度這幾個方面進行測試:(這里只測試數據類型:,,數據的內容都是一樣的)

  (一)  測試前奏:

1.      創建三種數據類型char(10)datetimesmalldatetime的表;(表結構如下面SQL

CREATE TABLE[dbo].[TestDatetime](

    [Id] [int] IDENTITY(1,1) NOT NULL,

    [Dates] [datetime] NULL,

 CONSTRAINT[PK_TestDatetime] PRIMARY KEY CLUSTERED

(

    [Id] ASC

)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON[PRIMARY]

2.      插入相同記錄到三個表中;(這里插入1210000條記錄)

3.      [Dates]字段創建索引;(在創建索引的時候可以設置填充因子為100%

4.      查看索引屬性中的索引碎片信息,查看表數據和索引占用的空間,測試[Dates]字段索引的查詢效率;

  (二)  測試結果:

1.      數據存儲大小:


(圖2數據空間對比

2.      索引存儲信息:


(圖3char(10)


(圖4datetime


(圖5smalldatetime

3.      索引查詢的情況:

多次執行,SQL Server執行時間為:[char(10)] 大部分在43~59徘徊,偶爾出現小于10的;[datetime]平均在1~2毫秒;[smalldatetime]均在1毫秒;而且大家會發現[smalldatetime]有其它的9次邏輯讀取變為8次了。

 

--[TestChar10]

SQL Server 分析和編譯時間:

  CPU 時間=0 毫秒,占用時間=1 毫秒。

 

(2200 行受影響)

'TestChar10'。掃描計數1,邏輯讀取9次,物理讀取0次,預讀0次,lob邏輯讀取0次,lob物理讀取0次,lob預讀0次。

 

SQL Server 執行時間:

  CPU 時間=0 毫秒,占用時間=59 毫秒。

 

SQL Server 執行時間:

   CPU 時間=0 毫秒,占用時間=1 毫秒。

 

--[TestDatetime]

SQL Server 分析和編譯時間:

  CPU 時間=0 毫秒,占用時間=1 毫秒。

 

(2200 行受影響)

'TestDatetime'。掃描計數1,邏輯讀取9次,物理讀取0次,預讀0次,lob邏輯讀取0次,lob物理讀取0次,lob預讀0次。

 

SQL Server 執行時間:

  CPU 時間=0 毫秒,占用時間=2 毫秒。

 

SQL Server 執行時間:

   CPU 時間=0 毫秒,占用時間=1 毫秒。

 

--[TestSmalldatetime]

SQL Server 分析和編譯時間:

  CPU 時間=0 毫秒,占用時間=1 毫秒。

 

(2200 行受影響)

'TestSmalldatetime'。掃描計數1,邏輯讀取8次,物理讀取0次,預讀0次,lob邏輯讀取0次,lob物理讀取0次,lob預讀0次。

 

SQL Server 執行時間:

  CPU 時間=0 毫秒,占用時間=1 毫秒。

 

SQL Server 執行時間:

   CPU 時間=0 毫秒,占用時間=1 毫秒。

 

--SQL Server 2008新數據類型

SELECT

CAST('2007-05-08 12:35:29. 1234567+12:15' AS time(7)) AS 'time'

,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date'

,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS

'smalldatetime'

,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime'

,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 'datetime2'

,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 'datetimeoffset';

  四、參考文獻

  日期和時間數據類型及函數(Transact-SQL)

  LEN (Transact-SQL)

  DATALENGTH (Transact-SQL)

  smalldatetime和datetime存儲

 

it知識庫SQL Server datetime數據類型設計、優化誤區,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产偷国产偷亚洲高清人乐享 | 日日噜噜噜夜夜爽爽狠狠图片 | 亚洲青青草原 | 在线观看永久免费网址 | 一个人的视频全免费在线观看www | 亚洲国产精品无码中文在线 | 日韩欧美视频一区二区 | 性插图动态图无遮挡 | 日日干夜夜啪蕉视频 | 最新国产av.在线视频 | 国产精品禁18久久久夂久 | 欧美在线视频一区 | 久青草国产在视频在线观看 | 狠狠色狠狠色综合曰曰 | 吃春药后的女教师 | 久久九九亚洲精品 | 欧美日韩一区在线观看 | se01国产短视频在线观看 | 精品一区二区免费视频蜜桃网 | 91桃色污无限免费看 | 香蕉鱼视频观看在线视频下载 | 亚洲爆乳无码精品AAA片蜜桃 | 扒开腿狂躁女人GIF动态图 | 少妇精品无码一区二区三区 | 精品国产乱码久久久久久下载 | 午夜精品久久久久久久99蜜桃 | 亚洲国产中文字幕在线视频综合 | 一个色综合久久 | 国产亚洲精品久久久久久国 | 亚洲免费精品视频 | 小蝌蚪视频在线观看免费观看WWW | 国产精品资源网站在线观看 | 牢记永久免费网址 | 欧美激情一区二区三区视频 | 午夜国产在线观看 | 欧美片内射欧美美美妇 | 亚洲免费人成在线视频观看 | 四虎影5151毛片在线看 | 8X拨牐拨牐X8免费视频8 | 亚洲视频中文字幕在线观看 | 日韩精品一卡二卡三卡四卡2021 |