2017-06-10 7 views
1

SQL Serverで日付をサポートするデータ型の使用に関するいくつかの記事を読んでいますが、使用するデータの種類について未定です。SQL Server smalldatetimeとdatetime2

で定義されたテーブル:これは私の範囲である

(4つのバイト対6バイト)

すべての人々が新しい強力なdatetime2タイプを使用することを言いますが、smalldatetimeは、メモリの面でより一層便利です。この方法:ため

Date: typeof(<Date type to choose>) 
Value1: typeof(int) 
Value2: typeof(int) 
Value3: typeof(int) 

は、その後、私は、これらの要件を持っています列、私は分まで精度が必要です。

このテーブルでは、私は毎日1万レコードを格納します。とても大きなデータです。

私の質問は次のとおりです:毎日2MBを節約する古いsmalldatetypeを使用する必要がありますか?

OR

は、私は新しい強力なdatetime2データ型を使用する必要がありますか?

おかげ

+1

だけ走ったために最も適切なデータ型を選びます必要とする精度が得られ、副作用としてストレージのメリットが得られます。秒が必要ない場合は、smalldatetimeを使用してください。 https://dba.stackexchange.com/questions/160709/sql-datetime20-vs-datetime22/160713#160713 –

+0

私はその記事を見ましたが、古い構造や支払いで2バイトを得る方が良いかどうかはまだ分かりません現代の構造を持つ2バイト –

答えて

3

日付範囲:smalldatetime型:1900-01-01 2079年6月6日通って、DATETIME2:0001-01-01

9999-12-31介してストレージ:あなたはそうではない場合秒、ちょうど数時間と分が必要です。ストレージは、6バイトのdatetime2(0)ではなく、4バイトのsmalldatetimeに似ています。

datetime2は値、精度(丸めなし)の範囲でのアップグレードです。したがって、大きなデータの場合はdatetime2を使用してください。

+0

秒単位での必要性なし、すべてのデータは15分ごとに保存され、クライアント側では正規化されます –

2

datetime2(2)は6バイトで、ミリ秒の2桁(00:00:00.00~23:59:59.99)になります。

smalldatetimeは4バイトで、行あたり2バイトを節約できる可能性があります。この列がクラスタ化キーの一部である場合、保存された2バイトは各非クラスタ化インデックスに影響します。

smalldatetimeの重要な機能の1つは、秒を切り捨てる代わりに、最も近い分に丸めることです。データがテーブルにどのように挿入されるかによって、またこの動作が望まれる場合やそうでない場合は、テーブルに挿入する前にこの値の追加事前処理が必要な場合があります。

例:

create table t (sdt smalldatetime, dt2 datetime2(2)) 
insert into t values 
('2017-01-01T11:22:22.33','2017-01-01T11:22:22.33') 
,('2017-01-01T11:22:33.33','2017-01-01T11:22:33.33') 

select 
    sdt = convert(char(23),sdt,121) 
    , dt2 = convert(char(23),dt2,121) 
from t 

rextesterデモ:http://rextester.com/JPMEE57778

リターン:私はもかかわらず、datetime2(2)と行くためにそれはおそらく十分だろうので、私は本当に、この丸めを嫌う

+-------------------------+-------------------------+ 
|   sdt   |   dt2   | 
+-------------------------+-------------------------+ 
| 2017-01-01 11:22:00.000 | 2017-01-01 11:22:22.33 | 
| 2017-01-01 11:23:00.000 | 2017-01-01 11:22:33.33 | 
+-------------------------+-------------------------+ 

1日2MBの節約がクラスタリングキーの一部である場合を除きます。

参考:

+0

私のデータはクライアント側で標準化されているため、秒は常に "00"です。データは15分ごとに保存されます –

関連する問題