以下の条件でデータベースのテーブルの列をすべて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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
カラム名を取得
-
ACCESSで容量が50MBになった...
-
オラクルのエクスポートについて
-
htmlコードで書かれた表にphpで...
-
テーブルで一番古いレコードだ...
-
MySQLのDB内容をWEB上に表示す...
-
「クリップボードにコピーされ...
-
このISAMでは、リンクテーブル・・
-
重複クエリを使ったデータ削除
-
クエリとパススルークエリを作...
-
MySQLの容量の削減の仕方
-
仕事のミス:本番データの削除→...
-
left joinなどで結合対象のレコ...
-
MySQLである項目の値の種類を求...
-
sql serverのテーブルレイアウ...
-
男性と2人で飲食店に行きテーブ...
-
お金持ちのテーブル
-
件数とデータを同時に取得する...
-
MACアドレス見えない
-
「テーブルに座って……」という...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでデータシートに同じデ...
-
Accessのテーブルデータを一気...
-
テーブルで一番古いレコードだ...
-
Oracleで上書きImportはできま...
-
このISAMでは、リンクテーブル・・
-
アクセス レコードセットを更...
-
ビューのソートについて
-
マテリアライズドビューとスナ...
-
処理の途中で停止させ、再開さ...
-
MS Accessを共有した際にファイ...
-
構文エラー : 演算子がありませ...
-
ORA-01401が表示され、データが...
-
accessでレコード更新直後の反...
-
重複クエリを使ったデータ削除
-
Accessでの稼働日数計算の方法
-
住所のDBテーブル、マスターの...
-
同一テーブルのデータを参照し...
-
ERROR1062:Duplicate entry.......
-
ACCESSで容量が50MBになった...
-
複数のテーブルを参照するselec...
おすすめ情報
データベースはSQLSERVER です