- - PR -
SQL Server2005 配列データの格納方法
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2009-02-18 10:35
私だったらこうします(ただし VB2005 以降) ・List(Of Byte) 型の変数を用意する。 ・List(Of Byte).AddRange() メソッドで、バイト列を順に追加していく。 ・追加し終わったら、List(Of Byte).ToArray() メソッドで配列に変換する。 ※Add() → AddRange() へ修正 [ メッセージ編集済み 編集者: rain 編集日時 2009-02-18 10:36 ] | ||||||||||||
|
投稿日時: 2009-02-18 10:51
rain様、回答ありがとうございます。
>私だったらこうします(ただし VB2005 以降) ・List(Of Byte) 型の変数を用意する。 ・List(Of Byte).AddRange() メソッドで、バイト列を順に追加していく。 ・追加し終わったら、List(Of Byte).ToArray() メソッドで配列に変換する。 動作を確認することができましたありがとうございます。 バイト配列からショート型へ展開するにはどうすればよろしいでしょうか? | ||||||||||||
|
投稿日時: 2009-02-18 10:56
BitConverter.ToInt16 メソッド
| ||||||||||||
|
投稿日時: 2009-02-18 11:48
あえて突っ込むと・・・ 貴方の言っていること=別テーブルにわけない。 貴方のやっていること=別レコードにわけない。 ゆえに本当に大丈夫なのか?とみている人は思ってしまうのです。
それは、しばしば行われるよ。過度に正規化すると、レコードの結合が頻発したり、読み込むレコードがばらばらのブロックに分散したりして、速度低下につながることはある。そのためにあえて正規化しないということは多い。
検索もそうだけど、SQLによる集計処理もできなくなるからシリアライズしてバイナリデータとして保存するのは用途を把握していないと危険かと。セキュリティ上の都合で暗号化が必要だったり、画像のような元からバイナリなデータではよくやるけどさ。 | ||||||||||||
|
投稿日時: 2009-02-18 12:03
rain様、甕星様回答ありがとうございます。
rain様 >BitConverter.ToInt16 メソッド ありがとうございました、動作を確認することができました。 これで、1200byteで保存することができます。 甕星様 >貴方の言っていること=別テーブルにわけない。 貴方のやっていること=別レコードにわけない。 すいませんよくわからないです。 >検索もそうだけど、SQLによる集計処理もできなくなるからシリアライズしてバイナリデータとして保存するのは用途を把握していないと危険かと。セキュリティ上の都合で暗号化が必要だったり、画像のような元からバイナリなデータではよくやるけどさ。 担当者に確認してみます。 バイナリーデータとして保存しない場合は、主キーを外部キーとするテーブルを作成し、そのテーブルに保存していく方法しかないのでしょうか? | ||||||||||||
|
投稿日時: 2009-02-18 12:40
そうする人のほうが多いと思います。 何が主キーで何が外部キーなのかは読みとれませんが。 今回の場合、処理速度向上が目的とのことですよね? だとしても、オブジェクトのシリアライズにそれなりの時間を食います。 素直にテーブルに入れて、120件を一発で取る方がよいとおもいますよ [ メッセージ編集済み 編集者: turutosiya 編集日時 2009-02-18 12:46 ] | ||||||||||||
|
投稿日時: 2009-02-18 18:15
turutosiya様回答ありがとうございます。
皆様のご指摘通りと思い、 担当者を説得して別テーブルに分けることになりました。 貴重なご意見を大変ありがとうございました。 BitConverterも別な処理に組み込み活用させていただきたいと思います、 本当に助かりました、ありがとうございました。 |