
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で質問しましょう!
似たような質問が見つかりました
- SQL Server DBのテーブルの設計ができず困っています。 2 2023/06/29 16:43
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- フリーソフト 日本語の入力をすべて記録する 1 2022/07/07 12:52
- Access(アクセス) AccessVBAで任意の複数リンクテーブルをAccessVBAを動かす際に削除したいと考えておりま 1 2022/11/17 15:45
- その他(ネットショッピング・通販・ECサイト) 先日あるサプリを定期購入で注文し、支払いはコンビニ後払いにしました。 同時期に複数同じような方法で色 2 2022/08/09 20:42
- 賃貸マンション・賃貸アパート 賃貸の壁紙の原状回復費用について 4 2023/03/01 04:26
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
今日の日付が入った行のデータ...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
エクセル 日付による並べ替え...
-
SQLで部分的にGROUP BYしたいとき
-
日付書式に変換でこまっています!
-
4バイトの日付データを、16進数...
-
日付の切り出し方法について
-
日付型なら変数の先頭になん...
-
型は合わせた方が良い?
-
【エクセルの質問】日付の書式...
-
テーブルの主キーをdate型...
-
日付関数について
-
DATE型の省略値について
-
wordの差し込み印刷での日付表示
-
DB2のSQL(日付)について
-
Accessのマクロでモジュールを...
-
sqlplusでヘッダーが付かない
-
Statement ignored というエラー
-
PL/SQL 実行中のSID
-
エクセルVBAでUserFormを起動し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
今日の日付が入った行のデータ...
-
SQLで部分的にGROUP BYしたいとき
-
重複するIDのデータを1行にま...
-
Accessの数値から時間に変換す...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
SQLサーバで和暦から西暦に変換...
-
テーブルの主キーをdate型...
-
エクセル 日付による並べ替え...
-
日付書式に変換でこまっています!
-
日数算出SQL
-
日付の切り出し方法について
-
指定した年月までのデータを取...
-
wordの差し込み印刷での日付表示
-
OSのシステム日付を変更して...
-
Excelグラフの日付軸の日付がず...
-
日付の最大値レコードを取得す...
-
特定の日付が第何週目にあるか...
-
OSのシステム日付を変更して...
-
excel 日付のみ置換したいのです
-
WHERE句にて「30日前から今日ま...
おすすめ情報