![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
以下の条件でデータベースのテーブルの列をすべてvarcharで扱う事に何か弊害がありますか?
【条件】
・テーブルに格納するデータは数値(浮動少数含む)と文字列のみ。
・このテーブルには膨大なcsvデータを格納し、必要時にselect句で取得しcsvデータに復元します。
・参照するだけで数値の計算はしません。
【varcharで管理したい理由】
格納するcsvデータはもともと別のデータベースのテーブルに格納されているものですが、csvデータの構造が正確にわからないためです。
個人的には、上記の様な条件のもと使用する場合は弊害はないと考えます。ご意見、ご回答お願いします。
No.2ベストアンサー
- 回答日時:
1.
管理のために、主キーとなる列は別にあったほうが良い
2.
性能のために、検索用キーとなる列が別にあったほうが良い
3.
CSV のままではなく JSON の形式で格納すれば、
JSON 関数で加工できるので便利
https://docs.microsoft.com/ja-jp/sql/t-sql/funct …
No.1
- 回答日時:
私なら、ちゃんと型を合わせます。
・ただ文字列を検索して抽出するだけだったら、わざわざDBは使わない。
CSVファイルをそのまま使った方が楽。
・DBに登録したのなら、取り出すときはDB側で集計等をして使いたいデータだけをCSVで受け取れるようにした方が便利
・数値順に並び換えてCSVを作りたい、といったことが難しい( '10' < '2' が真)
・日付での検索も難しい ('10-Aug-2020' < '20-Jan-2020' が真)
・DBのファイルサイズが大きくなる可能性がある
・元のDBとまったく同じ型にする必要はない。
CSVに内容に合わせればいい。
・日本語等の「全角文字」が入っている場合、varcharで扱えないことがある。
おっしゃる通りファイルで管理すべきですが、データ量(3GB)も多い上にcsvのデータを複数人で参照する事があり、特定項目でデータを絞り込んでselectする事がありデータベースに格納したが都合が良いかと考えました。少々システムとしては冗長な構成ですが。。
ちなみに、クライアント側からはwhere句で絞り込む条件ですが、ある一つの文字列だけが格納された列だけとなります。
※文字コードは互いにShiftjisです。
groupbyなどの集計も行わず、ただselectだけです。
その他注意事項ありましたら教えて頂けると幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- PHP htmlで複数の個数入力欄を表示させるには 1 2022/09/20 03:11
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- Excel(エクセル) PowerQueryに詳しい方教えてください(Office365) 1 2022/07/24 21:11
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- フリーソフト 色々な形式の個人情報を後で参照しやすいようWindow10で管理したいのですが、どんな方法があるの? 1 2023/04/29 16:46
- Access(アクセス) スキルシートのエクセルの項目に 2 2023/04/04 22:41
- Visual Basic(VBA) vbaについて 主に以下のような設定をしたいです。 Aブックの表の行数が20未満だったら Bブックの 1 2023/06/08 23:40
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
マテリアライズドビューとスナ...
-
ACCESSで容量が50MBになった...
-
アクセス レコードセットを更...
-
構文エラー : 演算子がありませ...
-
このISAMでは、リンクテーブル・・
-
「クリップボードにコピーされ...
-
Accessのテーブルデータを一気...
-
ORA-01401が表示され、データが...
-
ビューのソートについて
-
処理の途中で停止させ、再開さ...
-
結合テーブルでINSERTする方法...
-
MS Accessを共有した際にファイ...
-
仕事のミス:本番データの削除→...
-
Access昇順レコードを、5分割...
-
phpMyadmin(さくらSV)で検索が...
-
Oracleで上書きImportはできま...
-
ユニオンクエリで複数ファイル...
-
住所のDBテーブル、マスターの...
-
accessでレコード更新直後の反...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
ビューのソートについて
-
Oracleで上書きImportはできま...
-
結合テーブルでINSERTする方法...
-
accessでレコード更新直後の反...
-
このISAMでは、リンクテーブル・・
-
アクセス レコードセットを更...
-
重複クエリを使ったデータ削除
-
処理の途中で停止させ、再開さ...
-
マテリアライズドビューとスナ...
-
同一テーブルのデータを参照し...
-
ERROR1062:Duplicate entry.......
-
「クリップボードにコピーされ...
-
ORA-01401が表示され、データが...
-
ACCESSで容量が50MBになった...
-
Accessでの稼働日数計算の方法
-
構文エラー : 演算子がありませ...
-
MS Accessを共有した際にファイ...
おすすめ情報
データベースはSQLSERVER です