
No.2ベストアンサー
- 回答日時:
個人的には date 型でも特に問題ないのではないか、と思っていま
すが、どうでしょうか。
(そもそも主キーに日付、というのパターンをあまりみたことが
ないのでよくわかりません)
時刻まで含めたいのか、時刻は不要なのかによっても変わってき
ますが、ここは時刻はいらいない、として考えてみます。
また、使用するRDBMSによっても変わってくるはずです。
たとえばOracleの場合を比較してみると、
http://biz.rivus.jp/data_type_inside.html
(1)サイズ
DATE型・・・7バイト
NUMBER型・・6バイト
CHAR型・・・8バイト
NUMBER型がいいですが、どんぐりの背比べです。
(2)検索スピード
=を指定したときの検索スピードは、当然インデックスが使
われますから、どれにしても問題ないぐらい高速で、どれで
もいいでしょう。それ以外の検索は要件に応じて、どれが早い、
とはいちがいにはいえないと思います。可変長項目をプライマリ
キーにすると検索が遅い、というのはきいたことがありますが、
この場合は全部固定長ですね。
結論としては、検索の用途に応じて、実際にやりたい検索でスピード
をためしてみて決める、というところでしょうか。
RDBMSによって内部形式もちがいますし、一般的にどう、とは
いえないと思います。やりたい検索が決められなければ、DATE
関連に特化した関数がいろいろ使える(このへんもRDBMSに
よってちがいますが)、DATE型が無難かと思います。
回答ありがとうございます。
私なりに調べた結果、#1の方のお礼に書きましたが「3月32日」という日付に対応するための
流れが残っているようです。
理論的には型による違いはあまりないようですね。
(厳密なパフォーマンスを求めるならばむろん無視できませんが^^;)
ならば、日付の場合は特に指定がなければ日付型を使っていこうと思います。
#主キーに日付 → ログの主キーを日時(日付型)にしたかった様です。(私ではなく他の人からの話でした)
No.1
- 回答日時:
date型で持つと日付や時間計算には便利だが問い合わせをする際はlikeを使えると便利であるのでchar型を使う。
char型の方が容量も少なくすむ。
桁数が揃う文字データにはアクセススピードだけを考えればchar型の方が速いのでchar型を使う。
・・とか・・
色々調べてみました。
結果、
1.システムの処理上、「3月32日」なんていう通常ありえない日付を扱いたい場合がある(月末処理など)
2.そうの場合、日付型が使用できないのでchar型で扱うことになる。
3.日付をcharで扱う必要があるので、システム内で統一するために全てをchar型にしている
という場合が(私の周りには)多いようです。
で、そういう案件が続くと
4.1~3の経験から、最初からchar型にする
というパターンもあるようです。
あとは、日付の持ち方(考え方)がDBMSによって微妙に異なるので混乱を防ぐため、というのもあるようですが・・・
私としても(根拠はないですが)charの方がアクセススピードが速いような気がしています^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
今日の日付が入った行のデータ...
-
SQLで部分的にGROUP BYしたいとき
-
テーブルの主キーをdate型...
-
Excelの並べ替え後のデータを日...
-
Accessの数値から時間に変換す...
-
23時59分59秒までのデータを抽...
-
SQLで部分的にGROUP BYしたいと...
-
重複するIDのデータを1行にま...
-
日付型なら変数の先頭になん...
-
oracle 文字列 01:45 を時間に...
-
日付書式に変換でこまっています!
-
sysdateのフォーマットが変わり...
-
エクセルVBA 今日の日付行...
-
SQLサーバで和暦から西暦に変換...
-
Accessのマクロでモジュールを...
-
Statement ignored というエラー
-
Access VBAで行ラベルが定義さ...
-
キャッシュを使わずにSELECTを...
-
callで順に実行されるプロシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの数値から時間に変換す...
-
SQLで部分的にGROUP BYしたいとき
-
重複するIDのデータを1行にま...
-
今日の日付が入った行のデータ...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQLサーバで和暦から西暦に変換...
-
oracle 文字列 01:45 を時間に...
-
テーブルの主キーをdate型...
-
日付書式に変換でこまっています!
-
日付型なら変数の先頭になん...
-
Excelグラフの日付軸の日付がず...
-
wordの差し込み印刷での日付表示
-
WHERE句にて「30日前から今日ま...
-
エクセル 日付による並べ替え...
-
SQL/Loaderでの年月日時分秒の...
-
日付時刻+連番の主キーをSQLだ...
-
DB2のSQL(日付)について
-
SQL ブレーク処理について
-
Exel関数で誕生日がきたら...
-
VBAについて
おすすめ情報