2016-03-19 11 views
1

私は定期的なイベントを含むカレンダーイベントの日付を保存しています。テーブルが大きくなる可能性があります。ほとんどのクエリは1か月間(つまり、eventstart> = '1/1/2001'、eventstop < = '1/31/2001')のクエリであるため、クエリの時間はそれほど気にしません。大規模データセットのクエリでは、日付型がdatetimeよりもパフォーマンスが良いですか?

日付の列と日付の列を照会すると、範囲のクエリでパフォーマンスが向上しますか?

+3

私は知りませんが、それはdatetime' 'の8つのバイトに比べてわずか3バイトであるように私は、そう言うだろう。レコードのために、あなたはまた、4バイトの 'smalldatetime'を持っています。これはより公平な比較かもしれません。 – Andrew

+1

また、クエリがより正確に正しいものになります。あなたの例では、 'where eventstart> = '1/1/2001'とeventstop <= '1/31/2001''のdatetime型では、1月31日の午前10時にイベントを逃すことができます。 1月31日の午前0時にのみ真夜中になります。これが 'date'列だった場合、クエリは常に1月にイベントを選択します。したがって、時間を保存する必要がない場合は、速度とより小さな記憶要件の上にある 'date'型には他の利点があります。 –

+0

@Andrew、smalldatetimeはANSI標準ではありません。使用しないことをお勧めします。 https://msdn.microsoft.com/en-us/library/ms182418.aspx – FLICKER

答えて

1

ルール1)可能な限り大きな値に対応する最小のデータサイズを常に使用してください。

http://www.sql-server-performance.com/2007/datatypes/

+0

マイクロソフトでは、もうsmalldatetimeを使用しないことをお勧めします。 https://msdn.microsoft.com/en-us/library/ms182418.aspx – FLICKER

+0

http://www.sql-server-performance.com/2007/datatypes/ – Vincent

+0

また、質問は日付または日付の時間でした。あなた以外の小さな日時は誰も言及していません。しかし、ねえ、下院議員に感謝します。 – Vincent

関連する問題