0

アップロードしたい次のデータがあります。

(Pair)    (Date)    (Time)       (Bid)   (Ask)
EurUsd  01/01/2012  18:04:01    1.55037 1.55137
EurUsd  01/01/2012  18:04:20    1.55018 1.55118
EurUsd  01/01/2012  18:04:22    1.55031 1.55131
EurUsd  01/01/2012  18:04:36    1.55045 1.55145
EurUsd  01/01/2012  18:04:40    1.55058 1.55158
EurUsd  01/01/2012  18:04:40    1.5508  1.5518

GbpUsd  01/01/2012  18:06:11    1.55097 1.55197
GbpUsd  01/01/2012  18:06:22    1.55117 1.55217
GbpUsd  01/01/2012  18:06:24    1.55128 1.55228
GbpUsd  01/01/2012  18:06:38    1.55098 1.55198

データ型は次のとおりです:Nchar(6)、Date、Time、Decimal、Decimal。

残念ながら、行が分単位で一意になることを保証することはできません。また、このテーブルに毎日および他のペアでデータを追加します。

質問1)。上記のデータのPKを設定するための最良の方法は何ですか。BigInt型の「Id」という新しい列を設定し、その「IsIdentity」を「Yes」に設定する必要があると思いますか?次に、PKを「Id」に設定しますか?

質問2)。「ペア」、「日付」、「時間」に基づくクラスター化インデックス?

質問3)。テーブルに「Id」列を設定した場合、データのアップロードに使用していたsqlbulkcopy操作でColumnMappingを実行する必要があると思いますか?または、「Is Identity」プロパティが設定されると、列にデータをロードすることはできませんか?

御時間ありがとうございます。

4

1 に答える 1

1

1. PKを設定するには、GUID(一意の識別子)を使用し、NEWSEQUENTIALID()を使用してテーブルにデータを自動的に入力することをお勧めします(これはクラスター化されたインデックスキーになります)

2.( "Pair"、 "Date"、 "Time")列のセットにクラスター化インデックスは必要ないと思います。where句でこれらの列のいずれかを頻繁に使用する場合は、非クラスター化インデックスを使用します。それらの列。

3. sqlbulkcopyに関しては、テーブルにデータを挿入する列のみをマップできます。

于 2012-10-23T12:26:44.447 に答える