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 的最佳方法是什么。我假设我应该只设置一个名为“Id”的新列,类型为 BigInt,并将其“Is Identity”设置为 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 回答