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も見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
テーブルに主キーを作らないデメリットは?
その他(Microsoft Office)
-
外部参照してるキーを主キーにすることは可能?
その他(データベース)
-
履歴を管理するテーブル構造について
その他(データベース)
-
-
4
データベースのINT型項目にNULLはNG?
MySQL
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
SQL文のwhere条件文で使う <> の意味はなんですか
その他(データベース)
-
7
Viewにインデックスは張れますか?
Oracle
-
8
NUMBER(N,M) としたときの、格納データサイズ(バイト)
Oracle
-
9
ソフトのインストール場所ってどこにすればいいの?
UNIX・Linux
-
10
1つのテーブルに同じデータを参照する複数の列がある場合…
SQL Server
-
11
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
12
SELECTの結果で同一行を複数回出力する
Oracle
-
13
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
14
.NETアプリを作ったときの .manifest ファイルって必要なの
C言語・C++・C#
-
15
1対1のリレーション(主キー同士)はどういった時に使うものなのでしょう
MySQL
-
16
意味不明の実行時エラーで困っています
その他(プログラミング・Web制作)
-
17
データベース関係で、データの洗い替えとはどのような事を行うことでしょう
IT・エンジニアリング
-
18
関数内の変数に<summary>コメントを付けたい
C言語・C++・C#
-
19
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
20
主キーはオートナンバー型のIDを使った方が良いのか
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 日付による並べ替え...
-
テーブルの主キーをdate型...
-
SQLで部分的にGROUP BYしたいとき
-
SQLite3のtext→date変換について
-
Accessの数値から時間に変換す...
-
日数算出SQL
-
SQLサーバで和暦から西暦に変換...
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
ExcelのSUMPRODUCTで日付の範囲...
-
日付の最大値レコードを取得す...
-
DB2のSQL(日付)について
-
重複するIDのデータを1行にま...
-
wordの差し込み印刷での日付表示
-
SQL ブレーク処理について
-
excel 日付のみ置換したいのです
-
特定の日付が第何週目にあるか...
-
SQLでの抽出方法について 以下...
-
今日の日付が入った行のデータ...
-
日付の切り出し方法について
-
Access VBAで行ラベルが定義さ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessの数値から時間に変換す...
-
今日の日付が入った行のデータ...
-
エクセル 日付による並べ替え...
-
SQLサーバで和暦から西暦に変換...
-
SQLで部分的にGROUP BYしたいとき
-
14桁の日付(YYYYMMDDHHMMSS)を...
-
ExcelのSUMPRODUCTで日付の範囲...
-
テーブルの主キーをdate型...
-
Excelグラフの日付軸の日付がず...
-
oracle 文字列 01:45 を時間に...
-
23時59分59秒までのデータを抽...
-
SQL スクリプトのご相談
-
WHERE句にて「30日前から今日ま...
-
指定した年月までのデータを取...
-
DB2のSQL(日付)について
-
yyyy/M/dをyyyy/MM/ddに変換
-
重複するIDのデータを1行にま...
-
日付型なら変数の先頭になん...
-
日付書式に変換でこまっています!
-
Excelの並び替え(先頭の文字以...
おすすめ情報