1

さて、例を挙げましょう

日にち :15.12.2012 00:16:39

これで、次のように保存されます。

20121215001639

たとえば、30分(30 * 60 = 1800秒)より古い行を取得したい場合

私はちょうどすることができます

where date<20121215001639+1800 

これは、日時として保存するのではなく、パフォーマンスの方法でしょうか?

4

1 に答える 1

10

上記の marc_s のコメントには完全に同意しますが、楽しみのためにテストを行うことにしました。

同じデータを表す2 つのテーブルを作成しました。1 つはdatetime列を持ち、もう 1 つは列を持ちます。bigint

これがSQLフィドルです:http://www.sqlfiddle.com/#!3/74976/3

500、1000、および 5000 レコードに対してこのクエリを実行しましたが、実行計画が同一であることに毎回気付いたので、パフォーマンスの観点からは、bigint.

bigintただし、このアプローチには明らかな欠点があります。それらのいくつか:

  • への/からの変換にbigintは、より多くのコードを記述する必要があります
  • 月ごとのフィルタリングなどの操作には、より複雑で読みにくいクエリが必要です
  • Management Studio の結果グリッドを見ると、分離された日付部分が表示された場合に、できるだけ早く結果を「解析」/解釈することはできません。
于 2012-12-16T14:35:35.097 に答える